0
我有一個表有很多整數類型的列,它用於從其他源表中插入所有相應的列是varchar的數據。如何定位錯誤數據插入數據時沒有SSIS
INSERT INTO mytable(intCol1, intCol2, ...intColN, [OtherCols])
SELECT CAST(col1 AS int), CAST(col2 AS int),.... FROM SourceTable
最後的劇本,如「沒有東西轉換爲int」或「運算通過將轉換成int溢出錯誤」引發的數據級又令人費解的錯誤。但是,由於我有這麼多的int列和很多行數據,所以不太可能找到錯誤的來源,至少在列級別。
更重要的是,由於某些原因,不允許使用SSIS來重定向和查找我的情況的錯誤數據,只有SQL腳本級別可用。有沒有解決方法?
除非您驗證,否則您無法找到錯誤的數據。由於您僅限於使用SSIS,因此您需要在插入之前在表上編寫觸發器,並具有檢查每列的邏輯,並且如果它不符合表數據類型將其推入錯誤表中。 #只是一個想法。 – knkarthick24
你正在使用什麼版本的SQL Server? –
您還可以使用模式視圖編寫一些動態sql來獲取列名和數據類型,然後查詢源表以發現問題。或者使用這些視圖來幫助您在where子句中構造一個long語句,以在插入之前測試數據類型。然後插入通過where命令匹配的記錄以找到不成功的記錄...或者使用MERGE,如果不匹配,則插入失敗表....... ISNUMERIC()ISDATE()LEN() DATALENGHT()等..... – Matt