1

代码:

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

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

消息 9442,级别 16,状态 1,第 2 行 XML 解析:第 1 行,字符 38,不正确的编码名称语法

谁能帮我解决这个问题?我无法理解语法错误的地方。

4

1 回答 1

2

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

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

您可以尝试将变量声明为VARCHAR(MAX)或声明为NVARCHAR(MAX)并希望该变量的内容是您所期望的。

<?xml blah?>在这种情况下,您可以使用CHARINDEXand SUBSTRINGor切断整个 xml-declaration ( ) STUFF。或者,您可以使用REPLACE为您的encoding="blah". 如果为您工作,UTF-8或在.VARCHARUTF-16NVARCHAR

如果这样做没有帮助,您必须在阅读之前更改光盘上的文件。最好的是utf-16,可以直接读入XML。但不要忘记将其写入encoding或剥离声明。

于 2018-03-20T09:47:44.343 回答