首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL大容量插入UTF-8

SQL大容量插入UTF-8
EN

Stack Overflow用户
提问于 2017-09-27 11:31:54
回答 1查看 840关注 0票数 1

我有一个带有¬字段分隔符和[CR][LF]行终止符的UTF-8文件。SQL版本为Microsoft 2014 (SP2-CU7) (KB4032541) - 12.0.5556.0 (X64)

我使用bulk insert将txt块加载到一个表中,如下所示:

代码语言:javascript
复制
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) (即上面的脚本)之后,我的文件确实会加载,但在每个字符串的末尾留下一个连字符,以及在空列中。

输出如下所示

代码语言:javascript
复制
Col1    Col2    Col3        Col4
-       0-      pcb1412-    DD-
-       0-      pcb2134-    GFD-
-       0-      pcb324-     DDX-
-       0-      pcb1234-    DDR-

数据是正确的,但是连字符不在文件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-27 13:43:03

将您的ROWTERMINATOR更改为LF和CR的十六进制值'0x0a'只是为了显式化,尽管这并不是真正问题的根源。我想你得把你的文件转换成UTF-16。我知道早期版本的Server不支持UTF-8,我认为2012也不支持,但可能是错误的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46446806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档