SQL2005 读取 XML 数据

本文介绍如何在SQLServer中启用xp_cmdshell功能,并通过该功能读取XML文件内容到数据库表中。首先配置SQLServer以允许使用xp_cmdshell,然后创建包含产品信息的XML文件。最后执行SQL命令读取XML文件并解析数据。

1、首先要将SQL Server 的xp_cmdshell 的功能启动,随后我们将使用xp_cmdshell 来读取XML文档内容,执行如下脚本

EXEC sp_configure 'show advanced options'1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell'1;RECONFIGURE;

2、请将以下的XML内容保存成aa.xml,并存于“C:\”下。

 

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  
<Table>
    
<productID>1</productID>
    
<productCode>04ZS1-1</productCode>
    
<productName>单人沙发</productName>
    
<providerID>1</providerID>
    
<productTypeID>11</productTypeID>
    
<productKindID>12</productKindID>
    
<productColor>0</productColor>
    
<productBuyPrice>994.0000</productBuyPrice>
    
<productWholesalePrice>994.0000</productWholesalePrice>
    
<productSalePrice>2237.00</productSalePrice>
    
<productVolume>0</productVolume>
    
<productIsUse>0</productIsUse>
    
<productType>0</productType>
    
<IsMaterial>1</IsMaterial>
    
<saleQuotiety>3</saleQuotiety>
    
<isSplit>1</isSplit>
    
<isUpdate>0</isUpdate>
    
<syncid>6745</syncid>
    
<SetMoney>1518.00</SetMoney>
    
<IsQm>1</IsQm>
    
<materialGradeID>0</materialGradeID>
    
<IsZDY>0</IsZDY>
    
<UpdateTime>2009-06-12T14:06:02.467+08:00</UpdateTime>
    
<periodType>0</periodType>
  
</Table>
  
<Table>
    
<productID>2</productID>
    
<productCode>04ZS1-1</productCode>
    
<productName>单人沙发</productName>
    
<providerID>1</providerID>
    
<productTypeID>11</productTypeID>
    
<productKindID>12</productKindID>
    
<productIntCode>10367</productIntCode>
    
<productUnit></productUnit>
    
<productColor>0</productColor>
    
<productBuyPrice>994.0000</productBuyPrice>
    
<productWholesalePrice>994.0000</productWholesalePrice>
    
<productSalePrice>2237.00</productSalePrice>
    
<productVolume>0.48</productVolume>
    
<productWeight>36</productWeight>
    
<productIsUse>0</productIsUse>
    
<productType>1</productType>
    
<IsMaterial>1</IsMaterial>
    
<saleQuotiety>2.25</saleQuotiety>
    
<isSplit>1</isSplit>
    
<isUpdate>0</isUpdate>
    
<syncid>6746</syncid>
    
<SetMoney>1656.00</SetMoney>
    
<IsQm>1</IsQm>
    
<materialGradeID>0</materialGradeID>
    
<IsZDY>0</IsZDY>
    
<periodType>0</periodType>
  
</Table>
 
 
</NewDataSet>

 

3、执行以下命令

 



SELECT * into #temp1 FROM OPENROWSET(
   
BULK 'C:\aa.xml' ,SINGLE_BLOB  ) AS x
 
DECLARE @hdoc int 
 
DECLARE @doc xml

select @doc=BulkColumn  from #temp1

EXEC sp_xml_preparedocument @hdoc OUTPUT,@doc 

SELECT * into #temp2
FROM OPENXML (@hdoc'/NewDataSet/Table',3)
with  (productID  int
                 productCode 
varchar(50),
                 productName 
varchar(50)   )

exec sp_xml_removedocument @hdoc 

select * from #temp1
select * from #temp2

drop table #temp1
drop table #temp2

 

转载于:https://www.cnblogs.com/jirong/archive/2009/06/14/1503303.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值