代码:
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个字符,不正确的编码名称语法
任何人都可以帮我解决这个问题吗?我无法理解语法错误的地方。
答案 0 :(得分:2)
SQL-Server无法导入任何类型的编码...
您要将此文件导入为BLOB
,这只是一堆字节。这必须解释为SQL Server知道的数据类型。
您可以尝试将变量声明为VARCHAR(MAX)
或NVARCHAR(MAX)
,并希望此变量的内容符合您的预期。
在这种情况下,您可以使用<?xml blah?>
和CHARINDEX
或SUBSTRING
切断整个xml声明(STUFF
)。或者,您可以使用REPLACE
为encoding="blah"
设置不同的值。如果UTF-8
适合您,请使用VARCHAR
,UTF-16
时使用NVARCHAR
。
如果这样做无效,则必须先更改光盘上的文件。最好是utf-16
,可以直接读入XML。但请不要忘记将其写入encoding
或删除声明。