【发布时间】:2021-03-13 09:23:57
【问题描述】:
我们正在使用 ODBC 连接器将 Azure Sql Server 的 ADF 复制活动实施到本地 Teradata。 我们无法为 DateTime > Timestamp6 列进行映射,并且在测试时会出现各种错误。 (由于改变了源格式) 源查询已被转换/转换为各种格式到中间 Blob 文件中。
演员/转换是:
* convert(varchar(26), EventUtcTimeStamp,121) EventUtcTimeStamp //"2020-11-03 12:01:21.928294"
* convert(varchar(19), EventUtcTimeStamp,121) EventUtcTimeStamp //"2020-11-03 12:01:21"
* cast(DATEDIFF(s, '1970-01-01 00:00:00.000', eventUtcTimeStamp) as bigint) * 1000 eventUtcTimeStamp //1604404881000
Blob 文件是第二个 Copy 活动的源,其中目标是 teradata 表。这会生成各种 ErrorCode=TypeConversionFailure 的。
我们怀疑原因是接收器映射到 teradata,因为它不能从 DateTime 更改。 Blob 文件看起来没问题。 如果可能的话,任何人都遇到过这种情况并知道如何对其进行调整以使其正常工作?
【问题讨论】:
-
您的第一个示例当然看起来像时间戳 (6)。如果您尝试将其移动到 teradata 上的 varchar 列会发生什么情况,它是什么样的?
-
将它移动到 varchar 列工作得很好,它只是失败的时间戳。
-
只是添加它在 teradata varchar 列中的外观:'2020-03-09 10:27:04.143333'
-
既然您在源端应用了 CONVERT,那么接收器映射不应该将中间 Blob 文件中的字段描述为字符串而不是日期时间吗?
-
当您尝试将其插入时间戳(6)字段时遇到什么错误? @Fred,Teradata 会不会在这里进行隐式转换?
标签: timestamp odbc teradata azure-data-factory