【问题标题】:Teradata - Column name on which error occurredTeradata - 发生错误的列名
【发布时间】:2015-12-02 02:59:41
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 你是如何执行这些查询的?

标签: teradata columnname


【解决方案1】:

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

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

The ET/UV tables are maintained by TPT,处理外部数据,更容易遇到意外值。

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

check if a CAST will succeed 似乎没有通用方法。)

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 2015-05-14
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2016-12-01
    • 2018-05-24
    • 1970-01-01
    • 2016-08-03
    相关资源
    最近更新 更多