编码名称语法不正确

时间:2018-03-20 09:38:48

标签: sql-server xml tsql encoding xml-declaration

代码:

declare @filedata xml 
select @filedata = BulkColumn from openrowset(bulk 'E:\Scripts\apc.xml',single_blob) x;

以上是我收到错误的代码:

  

Msg 9442,Level 16,State 1,Line 2 XML解析:第1行,第38个字符,不正确的编码名称语法

任何人都可以帮我解决这个问题吗?我无法理解语法错误的地方。

1 个答案:

答案 0 :(得分:2)

SQL-Server无法导入任何类型的编码...

您要将此文件导入为BLOB,这只是一堆字节。这必须解释为SQL Server知道的数据类型。

您可以尝试将变量声明为VARCHAR(MAX)NVARCHAR(MAX),并希望此变量的内容符合您的预期。

在这种情况下,您可以使用<?xml blah?>CHARINDEXSUBSTRING切断整个xml声明(STUFF)。或者,您可以使用REPLACEencoding="blah"设置不同的值。如果UTF-8适合您,请使用VARCHARUTF-16时使用NVARCHAR

如果这样做无效,则必须先更改光盘上的文件。最好是utf-16,可以直接读入XML。但请不要忘记将其写入encoding或删除声明。