Sqoop是否可以在数据类型为timestamp(6)
的加载时间的基础上对Teradata进行增量加载?在hdfs中加载时如何处理格式:
sql exxeption:-期望有'('和')。
所以您有一列是loadtime [type timestamp(6)]。将数据提取到HDFS时,您必须创建3个步骤。还必须在hdfs端创建分区。我更喜欢这种方式,因为您不会弄乱旧数据。但是您可以在sqoop中使用--incremental
选项。
--incremental
0000-00-00 00:00:00.000000
。您将传递WHERE loadtime > ${max_of_loadtime_in_hdfs}
作为参数。 现在,对于teradata和hive,时间戳格式将有所不同。最好将其转换为字符串,同时将其保存为蜂巢。
因此,在使用蜂巢加载时间(字符串类型)检查加载时间时,必须将max_of_loadtime_in_hdfs
标记为时间戳(6)。因此,在sqoop结束时,您的情况将是(这对您有效):
WHERE loadtime > CAST(${max_of_loadtime_in_hdfs} AS TIMESTAMP(6))
max_of_loadtime_in_hdfs将是这样的WHERE loadtime > TO_TIMESTAMP(${max_of_loadtime_in_hdfs}, 'yyyy-mm-dd hh24:mi:ss.ff6')
所以在您的最后一个sqoop查询中:
2020-12-31 23:59:59.999999
配置单元表定义:
SELECT
column_A,
column_B,
...
column_N,
to_char(loadtime, 'yyyy-mm-dd hh24:mi:ss.ff6') loadtime
FROM teradata_table
WHERE loadtime > TO_TIMESTAMP(${max_of_loadtime_in_hdfs}, 'yyyy-mm-dd hh24:mi:ss.ff6')
AND $CONDITIONS --this is for sqoop don’t remove this