2015-09-06 73 views
3

我们无法访问我们的Teradata PROD,我们在SIT,UAT中开发脚本和测试。当提升到PROD,偶尔会出现以下错误:Teradata - 发生错误的列名

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

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

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

我相信,因为它到目前为止还没有实施,所以假设由于运行时错误,这应该更复杂。 但是,ET_,UV_错误表名确实会捕获这些错误中的一部分,我想(可能并非全部)。

能否请你解释一下,在ET_,UV_表上可能的情况下,为什么不能用正常的SQL查询来显示错误发生在哪一列?

+1

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

回答

0

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

我想象一下,将查询中的所有可疑表达式与原始SQL的相应部分关联起来会产生一定的开销。这肯定会需要不重要的开发工作。你可能想问你的Teradata代表这件事。

The ET/UV tables are maintained by TPT,它处理外部数据并且更可能遇到意外的值。

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

(似乎没有要到check if a CAST will succeed一种常见的方式。)