Nel*_* Wu 5 xml t-sql sql-server
我在SQLServer2005数据库中有超过一百万行,文本列包含XML字符串.我想将文本转换为XML数据类型,以便提取部分数据.
问题是有些记录在转换时会抛出错误(即无效的XML).如何忽略这些错误,以便正确地转换所有有效的XML并将无效的XML存储为null?
在类似的情况下,我将XML列添加到与Text列相同的表中.然后我使用RBAR进程尝试将"XML"从文本列复制到新的XML列(不是最快但是提交单个写入,这将是一次性的事情,对吧?).这假设您的表具有int数据类型的PK.
declare @minid int, @maxid int;
select @minid=min(ID), @maxid=max(ID) from XMLTable;
while @minid <= @maxid
begin
begin try
update t
set XMLColumn = cast(TextColumn as XML)
from XMLTable t
where ID = @minid;
set @minid = @minid+1
end try
begin catch
print('XML transform failed on record ID:'+cast(@minid as varchar))
--advance to the next record
set @minid = @minid+1
end catch
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |