【问题标题】:Setting date format parameter on a sqoop-import job在 sqoop-import 作业上设置日期格式参数
【发布时间】:2020-05-09 19:11:32
【问题描述】:

我在使用 sqoop-import 从 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"将相同的日期列转换为字符串@我做错了什么?

非常感谢。

【问题讨论】:

  • 你找到解决这个问题的方法了吗?我也面临 Sqoop 1.4.7-cdh6.1.0 的这个问题。我直接以文本文件格式将表导入 Hive。

标签: date hadoop sqoop parquet


【解决方案1】:

来源: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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多