[ 
https://issues.apache.org/jira/browse/SQOOP-2661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

lvchuanwen updated SQOOP-2661:
------------------------------
    Description: 
When I use sqoop to extract the timestamp Oracle type data, I must add 
-Doracle.jdbc.J2EE13Compliant=true to the /sqoop/server/bin/catalina.sh script, 
sqoop can work properly.
If the -Doracle.jdbc.J2EE13Compliant=true is not set due to carelessness
This error will occur
By: java.lang.ClassCastException: oracle.sql.TIMESTAMP cannot be cast to 
java.sql.Timestamp Caused
Org.apache.sqoop.connector.jdbc.GenericJdbcExtractor.extract at 
(GenericJdbcExtractor.java:79)
Org.apache.sqoop.connector.jdbc.GenericJdbcExtractor.extract at 
(GenericJdbcExtractor.java:38)
Org.apache.sqoop.job.mr.SqoopMapper.run at (SqoopMapper.java:95)
7 more
I think can use API  resultSet.getTimestamp(i + 1) instead of 
(java.sql.Timestamp)resultSet.getObject(i + 1); to avoid
This type converts exception .
resultSet.getDate(i + 1), resultSet.getTime(i+1) alse can instead of 
(java.sql.Date)resultSet.getObject(i + 1), (java.sql.Time)resultSet.getObject(i 
+ 1)

{code:title=GenericJdbcExtractor.java|borderStyle=solid}

 switch (schemaColumn.getType()) {
          case DATE:
            // convert the sql date to JODA time as prescribed the Sqoop IDF 
spec
            array[i] = 
LocalDate.fromDateFields((java.sql.Date)resultSet.getObject(i + 1));
            break;
          case DATE_TIME:
            // convert the sql date time to JODA time as prescribed the Sqoop 
IDF spec
            array[i] = 
LocalDateTime.fromDateFields((java.sql.Timestamp)resultSet.getObject(i + 1));
            break;
          case TIME:
            // convert the sql time to JODA time as prescribed the Sqoop IDF 
spec
            array[i] = 
LocalTime.fromDateFields((java.sql.Time)resultSet.getObject(i + 1));
            break;
          default:
            //for anything else
            array[i] = resultSet.getObject(i + 1);

          }
{code}



reference:http://docs.oracle.com/cd/B28359_01/java.111/b31224/datacc.htm#i1024324

  was:
When we use sqoop to extract the timestamp Oracle type data, we must add 
-Doracle.jdbc.J2EE13Compliant=true to the /sqoop/server/bin/catalina.sh script, 
sqoop can work properly.
If the -Doracle.jdbc.J2EE13Compliant=true is not set due to carelessness
This error will occur
By: java.lang.ClassCastException: oracle.sql.TIMESTAMP cannot be cast to 
java.sql.Timestamp Caused
Org.apache.sqoop.connector.jdbc.GenericJdbcExtractor.extract at 
(GenericJdbcExtractor.java:79)
Org.apache.sqoop.connector.jdbc.GenericJdbcExtractor.extract at 
(GenericJdbcExtractor.java:38)
Org.apache.sqoop.job.mr.SqoopMapper.run at (SqoopMapper.java:95)
7 more
 we can use API  resultSet.getTimestamp(i + 1) instead of 
(java.sql.Timestamp)resultSet.getObject(i + 1); to avoid
This type converts exception .
resultSet.getDate(i + 1), resultSet.getTime(i+1) alse can instead of 
(java.sql.Date)resultSet.getObject(i + 1), (java.sql.Time)resultSet.getObject(i 
+ 1)

{code:title=GenericJdbcExtractor.java|borderStyle=solid}

 switch (schemaColumn.getType()) {
          case DATE:
            // convert the sql date to JODA time as prescribed the Sqoop IDF 
spec
            array[i] = 
LocalDate.fromDateFields((java.sql.Date)resultSet.getObject(i + 1));
            break;
          case DATE_TIME:
            // convert the sql date time to JODA time as prescribed the Sqoop 
IDF spec
            array[i] = 
LocalDateTime.fromDateFields((java.sql.Timestamp)resultSet.getObject(i + 1));
            break;
          case TIME:
            // convert the sql time to JODA time as prescribed the Sqoop IDF 
spec
            array[i] = 
LocalTime.fromDateFields((java.sql.Time)resultSet.getObject(i + 1));
            break;
          default:
            //for anything else
            array[i] = resultSet.getObject(i + 1);

          }
{code}



reference:http://docs.oracle.com/cd/B28359_01/java.111/b31224/datacc.htm#i1024324


> Improved sqoop extraction of Oracle 11 timestamp data type exception problem
> ----------------------------------------------------------------------------
>
>                 Key: SQOOP-2661
>                 URL: https://issues.apache.org/jira/browse/SQOOP-2661
>             Project: Sqoop
>          Issue Type: Improvement
>          Components: connectors/generic
>    Affects Versions: 1.99.6
>         Environment: oracle 11g 
> sqoop1.99.6
>            Reporter: lvchuanwen
>             Fix For: 1.99.7
>
>
> When I use sqoop to extract the timestamp Oracle type data, I must add 
> -Doracle.jdbc.J2EE13Compliant=true to the /sqoop/server/bin/catalina.sh 
> script, sqoop can work properly.
> If the -Doracle.jdbc.J2EE13Compliant=true is not set due to carelessness
> This error will occur
> By: java.lang.ClassCastException: oracle.sql.TIMESTAMP cannot be cast to 
> java.sql.Timestamp Caused
> Org.apache.sqoop.connector.jdbc.GenericJdbcExtractor.extract at 
> (GenericJdbcExtractor.java:79)
> Org.apache.sqoop.connector.jdbc.GenericJdbcExtractor.extract at 
> (GenericJdbcExtractor.java:38)
> Org.apache.sqoop.job.mr.SqoopMapper.run at (SqoopMapper.java:95)
> 7 more
> I think can use API  resultSet.getTimestamp(i + 1) instead of 
> (java.sql.Timestamp)resultSet.getObject(i + 1); to avoid
> This type converts exception .
> resultSet.getDate(i + 1), resultSet.getTime(i+1) alse can instead of 
> (java.sql.Date)resultSet.getObject(i + 1), 
> (java.sql.Time)resultSet.getObject(i + 1)
> {code:title=GenericJdbcExtractor.java|borderStyle=solid}
>  switch (schemaColumn.getType()) {
>           case DATE:
>             // convert the sql date to JODA time as prescribed the Sqoop IDF 
> spec
>             array[i] = 
> LocalDate.fromDateFields((java.sql.Date)resultSet.getObject(i + 1));
>             break;
>           case DATE_TIME:
>             // convert the sql date time to JODA time as prescribed the Sqoop 
> IDF spec
>             array[i] = 
> LocalDateTime.fromDateFields((java.sql.Timestamp)resultSet.getObject(i + 1));
>             break;
>           case TIME:
>             // convert the sql time to JODA time as prescribed the Sqoop IDF 
> spec
>             array[i] = 
> LocalTime.fromDateFields((java.sql.Time)resultSet.getObject(i + 1));
>             break;
>           default:
>             //for anything else
>             array[i] = resultSet.getObject(i + 1);
>           }
> {code}
> reference:http://docs.oracle.com/cd/B28359_01/java.111/b31224/datacc.htm#i1024324



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to