在sqoop-import作业上设置日期格式参数

时间:2017-05-15 15:32:01

标签: date hadoop sqoop parquet

我无法使用从oracle数据库到HDFS镶木地板文件的sqoop-import将日期列转换为字符串。我使用以下内容:

sqoop-import -Doraoop.oracle.session.initialization.statements="alter session set nls_date_format='YYYYMMDD'"

我的理解是,这应该在开始传输数据之前执行上述语句。我也试过

-Duser.nls_date_format="YYYYMMDD"

但这也不起作用,生成的镶木地板文件仍然包含表中列出的原始日期格式。如果重要的话,我在bash脚本中运行这些,并使用--map-column-java "MY_DATE_COL_NAME=String"将相同的日期列转换为字符串。我做错了什么?

非常感谢。

1 个答案:

答案 0 :(得分:0)

来源:SqoopUserGuide

Oracle JDBC将DATE和TIME SQL类型表示为TIMESTAMP值。 Oracle数据库中的任何DATE列都将作为TIMESTAMP导入Sqoop中,并且Sqoop生成的代码会将这些值存储在java.sql.Timestamp字段中。

在查询中导入时,您可以尝试将日期转换为字符串。

例如

sqoop import -- query 'select col1, col2, ..., TO_CHAR(MY_DATE_COL_NAME, 'YYYY-MM-DD') FROM TableName WHERE $CONDITIONS'