2015-09-06 72 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一種常見的方式。)