Sql server SQL Server OPENROWSET(大容量';C:\Temp\Test.xml';,单CLOB)返回乱码的前导字符
当使用Sql server SQL Server OPENROWSET(大容量';C:\Temp\Test.xml';,单CLOB)返回乱码的前导字符,sql-server,openrowset,Sql Server,Openrowset,当使用OPENROWSET将xml文件的内容写入nvarchar(MAX)列时,我的前导字符会乱码 即使在没有插入的情况下进行选择,结果也是一样的 SELECT Xml.BulkColumn FROM OPENROWSET(BULK 'C:\Temp\Test.xml', SINGLE_CLOB) Xml 结果: 我尝试了各种CODEPAGE选项,但得到了相同的结果 SELECT Xml.BulkColumn FROM OPENROWSET(BULK 'C:\Temp\Test.xml',
OPENROWSET
将xml文件的内容写入nvarchar(MAX)
列时,我的前导字符会乱码
即使在没有插入的情况下进行选择,结果也是一样的
SELECT Xml.BulkColumn
FROM OPENROWSET(BULK 'C:\Temp\Test.xml', SINGLE_CLOB) Xml
结果:
我尝试了各种CODEPAGE
选项,但得到了相同的结果
SELECT Xml.BulkColumn
FROM OPENROWSET(BULK 'C:\Temp\Test.xml', CODEPAGE='RAW', SINGLE_CLOB) Xml
在记事本中,文件看起来很好
解决方案是将xml文件的编码从UTF-8更改为Unicode,然后使用SINGLE_NCLOB而不是SINGLE_CLOB
SELECT Xml.BulkColumn
FROM OPENROWSET(BULK 'C:\Temp\Test2.xml', SINGLE_NCLOB) Xml
2016版之前的SQL Server实际上不支持Microsoft文档中的UTF-8:
重要信息我们建议您仅使用SINGLE\u BLOB选项导入XML数据,而不是SINGLE\u CLOB和SINGLE\u NCLOB,因为只有SINGLE\u BLOB支持所有Windows编码转换。
来源: