SQL Server BULK INSERT:批量加载数据转换错误(指定代码页的类型不匹配或无效字符)

时间:2016-08-10 15:16:01

标签: sql sql-server bulkinsert

这是我的表定义:

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 个答案:

答案 0 :(得分:2)

我没有答案,但我有一线攻击:将其分解为更小的问题。

从一组仅包含5行数据的数据开始。如果仍然失败,请将其分为5行,每列1行 - 这将测试您的行分隔符。然后,重新添加第二列,以测试列分隔符。接下来,添加除" blob"之外的所有内容。列,测试,然后重新添加blob。可能只将blob作为单个数据集加载,看看它是如何工作的。

请注意,您需要为上述所有内容创建特定的测试表。

从多个角度来看问题应该有助于缩小正在发生的事情 - 什么有效,什么无效。 (文件是单字节,不是双字节,对吗?)