2016-08-10 34 views
0

這裏是我的表定義:的SQL Server BULK INSERT:批量加載數據轉換錯誤(類型不匹配或無效字符指定的代碼頁)

CREATE TABLE BillTexts 
(
    SessionNum INT, 
    Name VARCHAR(200), 
    Part INT, 
    BillText VARCHAR(MAX) 
) 

這裏是我使用的大部分代碼插入。我使用了時髦的分隔符來確保billtext列中沒有衝突(逗號,換行符)。

BULK INSERT BillTexts 
FROM texts.csv 
WITH (
    DATAFILETYPE = 'char', 
    FIELDTERMINATOR = '¬', 
    ROWTERMINATOR = '[]{}\r\n' 
) 

這是我的文本文件的第一對幾行。

112¬hconres1¬1¬"A whole bunch of text"[]{} 
112¬hconres1¬2¬"Another whole bunch of text"[]{} 

在每一個行(包括行1至10),得到錯誤

批量負載數據轉換錯誤(類型不匹配或無效字符爲指定的代碼頁)爲第1行,第1列( SessionNum)

批量負載數據轉換錯誤(類型不匹配或用於指定的代碼頁第2行,第1列無效字符 )(SessionNum)

我真的不知道爲什麼它沒有插入。據我所知,這是我可以將這些數據存入表格的唯一方法(其中有很多)。

+1

'¬'字符可能是'tab'的表示。試試'\ t'。 –

+0

我會嘗試擺弄那個分隔符,謝謝 – Shakespeare

回答

2

我沒有答案,但我有一條攻擊線:將其分解成更小的問題。

從僅包含5行數據的一組數據開始。如果仍然失敗,請將其分成5列,並加1列 - 這將測試您的行分隔符。然後,重新添加第二列,以測試列分隔符。接下來,添加除「blob」列之外的所有列,然後再添加blob。可能只需將blob加載爲單列數據集,看看它是如何工作的。

請注意,您需要爲以上所有創建特定的測試表。

從多個角度來看待這個問題應該有助於縮小發生的情況 - 哪些是有效的,哪些沒有。 (這些文件是單字節的,而不是雙字節的,對嗎?)

+0

非常感謝。經過很多故障排除後,結果證明是編碼錯誤。 – Shakespeare

相關問題