在sqoop导入作业上设置日期格式参数

gpnt7bae  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(718)

我在使用sqoop从oracle数据库导入hdfs parquet文件时,无法将日期列转换为字符串。我正在使用以下命令:

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

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

-Duser.nls_date_format="YYYYMMDD"

但是这也不起作用,生成的Parquet文件仍然包含表中列出的原始日期格式。如果有关系的话,我将在bash脚本中运行它们,并使用 --map-column-java "MY_DATE_COL_NAME=String" 我做错什么了?
非常感谢。

hc8w905p

hc8w905p1#

来源:sqoopuserguide
oraclejdbc将日期和时间sql类型表示为时间戳值。oracle数据库中的任何日期列都将作为时间戳导入到sqoop中,sqoop生成的代码将这些值存储在java.sql.timestamp字段中。
在查询中导入时,可以尝试将日期转换为字符串。
例如

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

相关问题