我有一个带有¬字段分隔符和[CR][LF]行终止符的UTF-8文件。SQL版本为Microsoft 2014 (SP2-CU7) (KB4032541) - 12.0.5556.0 (X64)
我使用bulk insert将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,0x0a,但是没有工作,我得到以下错误。
Msg 4866,16级,状态8,第1行 大容量装载失败。列在第1行第1列的数据文件中太长。请验证字段终止符和行终止符的指定是否正确。 Msg 7301,第16级,状态2,第1行 无法从OLE DB提供程序获得链接服务器"(null)“的所需接口("IID_IColumnsInfo")。
因此,在删除代码页并使用CHAR(10) (即上面的脚本)之后,我的文件确实会加载,但在每个字符串的末尾留下一个连字符,以及在空列中。
输出如下所示
Col1 Col2 Col3 Col4
- 0- pcb1412- DD-
- 0- pcb2134- GFD-
- 0- pcb324- DDX-
- 0- pcb1234- DDR-数据是正确的,但是连字符不在文件中。
发布于 2017-09-27 13:43:03
将您的ROWTERMINATOR更改为LF和CR的十六进制值'0x0a'只是为了显式化,尽管这并不是真正问题的根源。我想你得把你的文件转换成UTF-16。我知道早期版本的Server不支持UTF-8,我认为2012也不支持,但可能是错误的。
https://stackoverflow.com/questions/46446806
复制相似问题