从oracle导入时的Sqoop日期问题



我正试图将一个巨大的表从oracle10g导入HDFS(GCS,因为我将sqoop与Google Cloud Dataproc一起使用(作为AVRO。当表没有任何日期列时,一切都很好,但当它有了一些日期时,导入的日期非常错误。

类似:Oracle数据->30/07/76和HDFS数据->14976-07-30 20:02:00.0
类似:Oracle数据->84年3月26日和HDFS数据->10384-03-26 20:32:34.0

我已经将日期字段映射为字符串,使它们成为那样。我使用默认的sqoop方式导入,将日期字段作为epoch int,但转换也不正确。

类似:Oracle数据->01/01/01和HDFS数据-&gt-62135769600000,而应该是978314400000

希望有人能帮我解决这个问题。感谢

附加信息:

Sqoop命令我正在运行

import -Dmapreduce.job.user.classpath.first=true -Dorg.apache.sqoop.splitter.allow_text_splitter=true --connect=$JDBC_STR --username=$USER --password=$PASS --target-dir=gs://sqoop-dev-out-files/new/$TABLE --num-mappers=10 --fields-terminated-by="t" --lines-terminated-by="n" --null-string='null' --null-non-string='null' --table=$SCHEMA.$TABLE --as-avrodatafile --map-column-java="DATACADASTRO=String,DATAINICIAL=String,DATAFINAL=String"

Sqoop版本:1.4.7
JDBC版本:6

我认为您在oracle中的日期是0001年1月1日,请尝试_char(COLUMN,'DD/MM/YYYY'(。

我的问题是,由于用户键入错误,我的日期实际上是0001/01,并且我无法更新原始oracle数据库中的列。

我的问题是,转换到unix应该是62135596800000,但实际上是62135769600000(30/12/0000(。

起初,我以为这是一个时区问题,但这是两天的时差。

相关内容

  • 没有找到相关文章

最新更新