【发布时间】:2014-09-17 04:05:36
【问题描述】:
所以我在尝试加载一些数据时偶然发现了一个有趣的问题。本质上,我有一些包含数据的文件,我试图将这些文件批量插入到带有 varchar 列的表中,以便于导入。该文件以制表符分隔,以 CRLF 作为行终止符。
由于某种原因,当我从自己的 PC 写入/复制和粘贴 BULK INSERT 命令时,命令失败。它提供了一个错误说明
Bulk load: DataFileType was incorrectly specified as widechar. DataFileType will be assumed to be char because the data file does not have a Unicode signature.
然后它说:
Bulk load failed. The column is too long in the data file for row 1, column 7. Verify that the field terminator and row terminator are specified correctly.
命令如下:
BULK INSERT <table>
FROM '<filepath>'
WITH
(
DATAFILETYPE = 'widechar',
FIELDTERMINATOR = ' ',
ROWTERMINATOR = '
'
);
现在,没有意义的部分是,在不更改任何代码的情况下,我的同事能够完美地运行和加载表。没有警告消息,没有失败,什么都没有。
当我在 Notepad++ 中查看启用了所有字符符号的命令时,它似乎是正确的,以 CRLF 作为行尾和箭头来表示列之间的制表符。
我唯一能想到的就是我的 SQL Server Management Studio 文本编辑器的编码一定会弄乱字段/行终止符参数并导致批量插入命令失败。
有人有什么好主意吗?
【问题讨论】:
标签: sql character-encoding sql-server-2008-r2 bulkinsert