2009-05-26 48 views
0

我做一個導入並將列轉換爲其他數據類型。在導入期間,我檢查是否可以將存儲在列中的值轉換爲目標數據類型。如果沒有,我把一個默認值,例如我將字符串轉換爲int,當我無法轉換字符串時,我插入-1。T-SQL:如何在導入期間記錄錯誤的條目

在這一刻,如果我可以將錯誤的條目記錄到單獨的表中,例如,而不是可解析的字符串'1234''xze'到達,所以我將-1放入目標表中並將'xze'放入日誌表中。 這可能與(T-)SQL?

乾杯,

安德烈亞斯

+0

多少行,我們談論的垃圾?每次進口幾十甚至幾千? – gbn 2009-05-26 07:44:12

回答

2

這也很容易與SSIS數據流任務做。您可能嘗試的任何數據轉換或查找步驟都有「成功」輸出和「錯誤」輸出。您只需將所有錯誤輸出指向「聯合」轉換,然後將其轉換爲常見錯誤表。所有成功的結果進入你的「成功」表。您甚至可以在錯誤表中添加額外的詳細信息,爲您提供清晰的錯誤消息。

這樣做的好處在於,當整個緩衝區在系統中移動時,您仍然可以獲得高性能。您最終會將充滿有效數據的緩衝區大容量寫入成功表,並將充滿錯誤的小緩衝區寫入錯誤表。當一行發生錯誤時,該行將簡單地從一行緩衝區移動到另一行。

+0

是的。但是如果這個人使用的是SQL Server 2000,那麼這是非常困難的。 – HLGEM 2009-05-26 15:38:03

+0

該帖子標有「sqlserver2005」。 – 2009-05-26 18:41:01

0

如果你有一個臨時表,可以過濾的好東西進入決賽桌,做一個連接回(NOT EXISTS)找到日誌表