2014-09-03 68 views
0

我正在使用SSIS導入一個csv非Unicode文件到SQL Server中。我收到錯誤「文本被截斷或者一個或多個字符在目標代碼頁中沒有匹配」。它在行70962的列0中失敗,該行的數據與其他行一樣;第一列中的數據不再比它上面的行中的數據長。奇怪/不一致的SSIS行導入錯誤

我的列0在平面文件連接中定義,在數據庫中定義爲255寬。行70692(和大多數其他行)中的數據是17個字符。

奇怪的是,如果我刪除文件中第70962行上面的一行,甚至是第一行,並保存csv文件,那麼導入運行正常。如果我替換已刪除的行,並運行導入,則會再次失敗。

所以我甚至不知道如何確定問題是什麼。

如果我創建一個新的平面文件連接是單列,我可以將整個文件導入到單列表格中。但只要我添加第一列分隔符(即第二列),那麼它就會在同一行上失敗。

目前我只是缺乏關於如何進一步調試的想法。

+0

像這樣的時代,我拉出[XVI32](http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm)在數據中尋找gremlins。另一種選擇是在.NET中編寫一個快速解析器來嘗試找到不匹配的行 – billinkc 2014-09-03 15:12:26

回答

0

你已經給了你的問題的答案;)

,如果我在文件中刪除一行以上70962行,連第一行, 保存CSV文件,然後導入運行正常。

您在文件的某個地方有一個錯誤的分隔符。當您在違規行前刪除任何數據時,分隔符的不匹配可能無法正確處理,只是保持打開狀態直至文件的最後一段,然後程序將爲您處理它。

檢查上面提到的那一行上的行和列分隔符,以及那一行。

+0

上面的行看起來也很好。我不確定邏輯:當然,如果我刪除第1行,並且第1行沒有問題,那麼錯誤仍然會出現? – Sean 2014-09-03 08:32:42

+0

如果在任何一行中有一個分隔符太多或丟失,刪除不同的行可能有時會「抵消」這個,因爲差異被「推送」到文件末尾。 – Tristan 2014-09-03 08:35:46

+0

直接在上面的行沒有可辨別的問題,那麼問題可以在以前的70961行中的任何一個上?我可以禁止它推送錯誤,並在相應的行上出現錯誤 - 即嚴格的分隔符檢查? – Sean 2014-09-03 08:45:14