XML转换成数据表

在数据库中将XML转换成数据表,xml格式如下:

<DocumentElement>
<OrderInfo>
<SaleOrderCode>Cc021201008260001-121</SaleOrderCode>
<SaleDate>2014-03-13</SaleDate>
<CargoName>测试商品</CargoName>
<BarCode>sxh114</BarCode>
<Amount>1</Amount>
<CityName>上海</CityName>
<Consignee>王五</Consignee>
<ConsigneeAddress>上海市徐汇区虹桥路XXX号</ConsigneeAddress>
<ConsigneeMP>13912345678</ConsigneeMP>
<ConsigneePhone>021-56565656</ConsigneePhone>
<ConsigneePostNO>200030</ConsigneePostNO>
<Payment>2555</Payment>
<CustomMemo>节假日可送</CustomMemo>
<OrderDescribe>《时尚伊人》一份</OrderDescribe>
<objID>208f3b696af9453e89170b6a7b2992ae</objID>
<IndexNO>1</IndexNO><CustomID />
<SellingPlatform />
<OldPrice>0</OldPrice>
<DeclaredValue>0</DeclaredValue>
<OrderAmount>0</OrderAmount>
</OrderInfo>

<OrderInfo>

...

</OrderInfo>
</DocumentElement>

此时需要采用OPENXML的方式进行导入。

DECLARE @idoc int
        EXEC sp_xml_preparedocument @idoc OUTPUT, @xml
        SELECT * INTO #dtImportMemberOrder
        FROM OPENXML(@idoc,'/DocumentElement/OrderInfo', 2) --节点
        with (objID CHAR(32),                        
        IndexNO int,                                
        SaleOrderCode VARCHAR(200),                        
        SaleDate char(10),                            
        CargoName NVARCHAR(250),                    
        BarCode VARCHAR(40),                        
        Amount INT,                                    
        CityName NVARCHAR(20),                        
        Consignee nvarchar(20),                        
        ConsigneeAddress NVARCHAR(150),                
        ConsigneeMP NVARCHAR(50),                    
        ConsigneePhone NVARCHAR(50),                    
        ConsigneePostNO NVARCHAR(10),                
        Payment DECIMAL(18,2),                
        CustomMemo NVARCHAR(300),                    
        OrderDescribe NVARCHAR(200),                
        CustomID NVARCHAR(50),                        
        OrderAmount DECIMAL(18,2),                    
        SellingPlatform CHAR(10),                    
        OldPrice DECIMAL(18,2),                        
        DeclaredValue DECIMAL(18,2)
                
        )

效果如下图:

posted @ 2014-03-13 17:39  超级塞亚人  阅读(929)  评论(0)    收藏  举报