【发布时间】:2017-09-27 11:31:54
【问题描述】:
我有一个带有 ¬ 字段分隔符和 [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 但没有任何效果,我收到以下错误。
消息 4866,第 16 级,状态 8,第 1 行
批量加载失败。数据文件中第 1 行第 1 列的列太长。请验证是否正确指定了字段终止符和行终止符。消息 7301,第 16 级,状态 2,第 1 行
无法从链接服务器“(null)”的 OLE DB 提供程序“BULK”获取所需的接口(“IID_IColumnsInfo”)。
因此,在删除代码页并使用 CHAR(10)(即上述脚本)后,我的文件确实会加载,但会在每个字符串的末尾以及空列中留下一个连字符。
输出如下所示
Col1 Col2 Col3 Col4
- 0- pcb1412- DD-
- 0- pcb2134- GFD-
- 0- pcb324- DDX-
- 0- pcb1234- DDR-
数据正确,但文件中没有连字符。你能告诉我哪里出错了吗?
谢谢
【问题讨论】:
标签: utf-8 sql-server-2014 bulkinsert codepages hyphen