我有一个存储过程,可以动态地使用openrowset读取数千个xml文件。
但是在我的xml文件中,有一些实例,其中女性符号(♀)显示在特定的<>中。这导致XML解析错误9420.我想知道在尝试读取xml文件时如何删除/替换/忽略该符号。将文件保存为UTF-8不起作用,因为我有数千个文件,所以不方便。
以下是我用来读取xml文件的代码......
Declare @xml xml
Select @xml = t
from OPENROWSET (Bulk 'C:\path', SINGLE_BLOB) as Transactions(T)
select @xml
答案 0 :(得分:0)
您最好的选择是让编写这些文件的系统不包含符号,或者确保他们在顶部设置正确的编码:示例:
after
或<?xml version="1.0" encoding="ISO-8859-1"?>
(我不确定该字符需要哪种编码)。
您还可以使用SSIS包来提取数据并进行清理。将整个记录丢弃到垃圾表中,或过滤掉字符并确保其编码为UTF-8标准。我更喜欢使用SSIS来提取平面文件数据,因为它可以更好地处理垃圾/坏数据。
第三个选项是将记录作为字符串拉入,使用REPLACE剥离字符,然后将其转换为XML。