【发布时间】:2016-11-28 11:38:56
【问题描述】:
我有一个平面文件,我想将其批量插入 SQL Server (2016)。
BULK INSERT table FROM 'path\flatfile.dat'
WITH
(
FORMATFILE='path\fileformat.fmt',
CODEPAGE = '65001',
DATAFILETYPE = 'Char'
);
平面文件没有字段终止符:
9999030000000001001ab Baujahr 0
9999030000000001004from construction year 0
9999030000000001006à partir d'année de construction 0
9999030000000001007da anno 0
9999030000000001008año construcción desde 0
9999030000000001009Vanaf bouwjaar 0
9999030000000001010fra byggeår 0
9999030000000001011från årsmodell 0
9999030000000001012fra årsmodell 0
9999030000000001013Vuosimallista 0
但是在格式文件中我设置了字段的长度
12.0
7
1 SQLCHAR 0 22 "" 1 Field1 ""
2 SQLCHAR 0 4 "" 2 field2 ""
3 SQLCHAR 0 3 "" 3 field3 ""
4 SQLCHAR 0 9 "" 4 field4 ""
5 SQLCHAR 0 3 "" 5 field ""
6 SQLCHAR 0 60 "" 6 Textfield ""
7 SQLCHAR 0 1 "\r\n" 7 flag ""
我拥有的其他类似格式的文件效果很好,除了这个。 我得到的错误是包含字符的行被截断 áåóñ...
Msg 4863, Level 16, State 1, Line 6
Bulk load data conversion error (truncation) for row 3, column 7 (LFlag).
Msg 4863, Level 16, State 1, Line 6
Bulk load data conversion error (truncation) for row 5, column 7 (LFlag).
Msg 4863, Level 16, State 1, Line 6
Bulk load data conversion error (truncation) for row 7, column 7 (LFlag).
Msg 4863, Level 16, State 1, Line 6
有什么想法吗?
【问题讨论】:
-
目标表中列的数据类型是什么?
-
数据类型是 nvarchar,长度与 fmt 文件中的长度相同 (Field1[nvarchar](22))...
-
未经测试,但您可能需要使用
SQLNCHAR而不是SQLCHAR作为格式文件中每一列的数据类型 (msdn.microsoft.com/en-us/library/ms189110.aspx) -
已经试过了,SQLNCHAR 和 SQLNVARCHAR 但我得到每个字段的截断错误
Bulk load data conversion error (truncation) for row 1, column 4 -
格式文件似乎与示例数据不匹配;该文件每行包含 91 个字符,但格式文件允许 102
标签: sql-server utf-8