最近搜索项目需要实现下面的逻辑:
很多个客户端clients 搜索完数据,一xml的形式保存在数据库中RawData{xml1,xml2,....},
每个xml_i都包含上万条搜索记录,xml_i和xml_j容易出现重复记录,
这些记录都要保存到清晰数据库CustomerDB中,xml_i也有可能会和CustomerDB中的数据重复
实现上面功能主要用到的关键技术是 Cross Apply ,nodes ,xpath
下面是演示代码
Insert Country (Name,ISO2Code,ISO3Code)
select distinct
co.value('(Name/text())[1]','varchar(100)'),
co.value('(ISO2Code/text())[1]','varchar(2)'),
co.value('(ISO3Code/text())[1]','varchar(3)')
from XMLData cross apply RawXml.nodes('/Countries/Country') as Cou(co)
go