3

我们无法访问我们的 Teradata PROD,我们在 SIT、UAT 中开发脚本和测试。提升为 PROD 时,偶尔会出现以下错误:

无效的日期/时间戳
发生数字溢出
不可翻译的字符
....

为什么 Teradata 不显示发生错误的确切列名?

我们需要通过脚本,其中大约 20 列从 varchar 转换为日期/时间戳,并且大约 10 列容易发生数字溢出。我们需要单独浏览每一列,期待这可能是罪魁祸首。当错误确实显示列名时会更放心。

我敢肯定,由于它直到现在还没有实现,所以假设由于运行时错误,这应该更复杂。但是,我猜 ET_、UV_ 错误表名确实捕获了其中一些错误(可能不是全部)。

您能否解释一下何时可以在 ET_、UV_ 表上实现,为什么不能实现普通 SQL 查询以显示错误发生在哪一列?

4

1 回答 1

1

这些运行时错误与对某个值的操作相关,不一定与特定列相关——它也可能是表达式的结果。

我想将查询中的所有易出错的表达式与原始 SQL 的相应部分相关联会产生一定的开销。这肯定需要大量的开发工作。您可能想就此向您的 Teradata 代表咨询。

ET/UV 表由 TPT 维护,它处理外部数据并且更有可能遇到意外值。

如果这是一种常见情况,您可能需要清理数据。通常有一种方法可以使用内置 SQL 函数或 UDF 查找导致列出的错误的行,例如:

(似乎没有一种通用的方法来检查 CAST 是否会成功。)

于 2016-02-13T14:15:42.807 回答