Sql 数据导出到XMl 与 从XML导入到数据库

1、导出到XMl select * from Brand  for xml auto ,root('Brands')

<Brands>
  <Brand BrandID="E584596D-4D66-4F2F-B6F7-71C3BEB4CA21" Name="inganico" />
  <Brand BrandID="19B04451-DDC4-4CDF-BE30-CB4E703B27DA" Name="安付达" />
  <Brand BrandID="3C6C8E12-7C4A-4F19-B491-4C0A64A48303" Name="安智" />
  <Brand BrandID="BF6C361A-8993-4660-A89D-EB32CCC9CE49" Name="百富" />
  <Brand BrandID="8E7FE420-3AE3-4017-80AB-B53CA29C80CA" Name="海博通" />
  <Brand BrandID="505C5565-08C5-4EF5-9316-55CA76C1E9F3" Name="惠尔丰" />
  <Brand BrandID="E5BA2A72-B1D1-457A-9AFD-A9D9B336E7C0" Name="利普门" />
  <Brand BrandID="1982A195-5263-45CC-B872-96F3C145FCCD" Name="联迪" />
  <Brand BrandID="E460CDA6-4A83-4C62-B049-3B980516AD79" Name="瑞柏" />
  <Brand BrandID="06BACF99-BB7E-447C-B021-CD8C3FFAE85A" Name="萨基姆" />
  <Brand BrandID="165510D9-342D-4402-882D-0A00DBFDAAE3" Name="新大陆" />
  <Brand BrandID="2FA88654-2311-4C51-85B1-A39077C34C6D" Name="新国都" />
</Brands>

2、将上边XML内容导回 数据库

CreatePROCEDURE [dbo].[P_BrandSynchronization]
@xmlDocument NVARCHAR (MAX)
AS
BEGIN
 
 SET NOCOUNT ON;
 DECLARE @docHandle int
 set @xmlDocument='<Brands>'+@xmlDocument+'</Brands>'
 EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument
 declare   @BrandID   uniqueidentifier
 declare   @Name   varchar(16)  ,  @message varchar(500)
 
 
 declare mycursor cursor for (SELECT   *  FROM   OPENXML   (@docHandle,'/Brands/Brand',1)  
 WITH  (
    BrandID   uniqueidentifier,
    Name   varchar(16)
    ))
 open mycursor
 FETCH NEXT FROM mycursor INTO @BrandID,@Name
 while(@@FETCH_STATUS = 0) 
  BEGIN
 
  if not exists(select  1 from  brand where brandId =@BrandID)  
   begin  
     insert   into   Brand(BrandID,Name)   values(@BrandID,@Name)  
   end 
  else
   update Brand set BrandID=@BrandID,Name=@Name where BrandID=@BrandID
  FETCH NEXT FROM mycursor INTO @BrandID,@Name
  END 
  --select @message      
 close mycursor
 DEALLOCATE mycursor
 end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值