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

标签 date hadoop sqoop parquet

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

非常感谢。

最佳答案

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

关于date - 在sqoop导入作业上设置日期格式参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43983415/

相关文章:

algorithm - 以 DD/MM HH :MM:SS 格式仅使用一次数字 0-9 查找最早日期

date - 从Cloud_Firestore到日期的Flutter Dart错误格式时间步

mysql - CentOS 上的 sqoop 导出

azure - 在 Azure 上的 HDInsights 群集上使用 Data Lake 或 Blob

sql - hive 中两条记录之间的差异

hadoop - Sqoop 将零小数导入为 0E-22

Sqoop 将整数作为字符串导入

javascript - 如何在 FullCalendar 中转换事件对象的开始日期和结束日期

java - 使用 java 1.7 从 postgres 检索时日期格式不一致

hadoop - 如何在没有Sqoop的情况下将数据从RDBMS移到hadoop?