编码名称语法不正确
Incorrect encoding name syntax
代码:
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 parsing: line 1, character 38, incorrect encoding name syntax
谁能帮我解决这个问题?我无法理解语法错误的地方。
SQL-Server 无法导入任何类型的编码...
您正在将此文件导入为 BLOB
,这只是一堆字节。这必须解释为数据类型 SQL 服务器知道。
您可以尝试将变量声明为 VARCHAR(MAX)
或 NVARCHAR(MAX)
,并希望此变量的内容符合您的期望。
在这种情况下,您可以使用 CHARINDEX
和 SUBSTRING
或 STUFF
截断整个 xml-declaration (<?xml blah?>
)。或者,您可以使用 REPLACE
为您的 encoding="blah"
设置不同的值。如果 VARCHAR
适合您,请使用 UTF-8
,如果 NVARCHAR
.
,则使用 UTF-16
如果这没有帮助,您必须在阅读之前更改光盘上的文件。最好是utf-16
,可以直接读成XML。但不要忘记将其写入 encoding
或删除声明。
代码:
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 parsing: line 1, character 38, incorrect encoding name syntax
谁能帮我解决这个问题?我无法理解语法错误的地方。
SQL-Server 无法导入任何类型的编码...
您正在将此文件导入为 BLOB
,这只是一堆字节。这必须解释为数据类型 SQL 服务器知道。
您可以尝试将变量声明为 VARCHAR(MAX)
或 NVARCHAR(MAX)
,并希望此变量的内容符合您的期望。
在这种情况下,您可以使用 CHARINDEX
和 SUBSTRING
或 STUFF
截断整个 xml-declaration (<?xml blah?>
)。或者,您可以使用 REPLACE
为您的 encoding="blah"
设置不同的值。如果 VARCHAR
适合您,请使用 UTF-8
,如果 NVARCHAR
.
UTF-16
如果这没有帮助,您必须在阅读之前更改光盘上的文件。最好是utf-16
,可以直接读成XML。但不要忘记将其写入 encoding
或删除声明。