我有一个带有¬
字段分隔符和[CR][LF]
行终止符的UTF-8文件。 SQL版本是Microsoft SQL Server 2014(SP2-CU7)(KB4032541) - 12.0.5556.0(X64)
我正在使用批量插入来加载表格中的txt图块,如下所示:
DECLARE @bulk_cmd varchar(1000)
SET @bulk_cmd = 'BULK INSERT [test].pcb_Load
FROM ''T:\pcb_Workspace_2\Outputs\pcb\Load\pcb_MS_TEST_2.txt''
WITH (FIELDTERMINATOR = ''¬'', ROWTERMINATOR = '''+CHAR(10)+''',FIRSTROW=2)'
EXEC (@bulk_cmd)
SELECT * FROM test.pcb_load
我尝试使用代码页65001,行终止符\ r,\ n,\ r \ n,0x0a但没有任何效果,我收到以下错误。
Msg 4866,Level 16,State 8,Line 1
批量加载失败。第1行第1列的数据文件中的列太长。验证是否正确指定了字段终止符和行终止符。Msg 7301,Level 16,State 2,Line 1
无法从OLE DB提供程序“BULK”获取链接服务器“(null)”所需的接口(“IID_IColumnsInfo”)。
因此,在删除代码页并使用CHAR(10)(即上面的脚本)之后,我的文件会加载,但在每个字符串的末尾都留下一个连字符,并且在空列中也是如此。
输出看起来像这样
Col1 Col2 Col3 Col4
- 0- pcb1412- DD-
- 0- pcb2134- GFD-
- 0- pcb324- DDX-
- 0- pcb1234- DDR-
数据正确,但连字符不在文件中。你能告诉我哪里出错吗?
由于
答案 0 :(得分:0)
将LF和CR的ROWTERMINATOR
更改为十六进制值'0x0a'
只是为了明确,尽管这不是您真正问题的根源。我想你将不得不将你的文件转换为UTF-16。我知道早期版本的SQL Server不支持UTF-8,我认为2012年也没有,但可能是错误的。