将关系Xml数据导入sql server 2012

时间:2014-08-03 19:35:26

标签: sql xml import sql-server-2012

<Order>
  <AmazonOrderID>1111-222-33</AmazonOrderID>
  <MerchantOrderID>111-222-33</MerchantOrderID>
  <PurchaseDate>2014-08-03T18:11:11+00:00</PurchaseDate>
  <LastUpdatedDate>2014-08-03T18:11:14+00:00</LastUpdatedDate>
  <OrderStatus>Pending</OrderStatus>
  <SalesChannel>Amazon.in</SalesChannel>
  <FulfillmentData>
    <FulfillmentChannel>Amazon</FulfillmentChannel>
    <ShipServiceLevel>Standard</ShipServiceLevel>
    <Address>
      <City>bangalore</City>
      <State>karnataka</State>
      <PostalCode>560038</PostalCode>
      <Country>IN</Country>
    </Address>
  </FulfillmentData>
  <OrderItem>
    <ASIN>B00AW9A53Q</ASIN>
    <SKU>SiM13</SKU>
    <ItemStatus>Unshipped</ItemStatus>
    <ProductName>Chicco 500ml Body Lotion</ProductName>
    <Quantity>1</Quantity>
    <ItemPrice>
      <Component>
        <Type>Principal</Type>
        <Amount currency="INR">390.0</Amount>
      </Component>
    </ItemPrice>
  </OrderItem>
</Order>

如何将此xml数据导入关系表。我有2个表,一个是订单,另一个是items.i想在订单表中插入下面提到的行作为主键。

   <AmazonOrderID>111-222-333</AmazonOrderID>
  <MerchantOrderID>1111-3333-444</MerchantOrderID>
  <PurchaseDate>2014-08-03T18:11:11+00:00</PurchaseDate>
  <LastUpdatedDate>2014-08-03T18:11:14+00:00</LastUpdatedDate>
  <OrderStatus>Pending</OrderStatus>
  <SalesChannel>Amazon.in</SalesChannel>

并使用amazonid作为外键订购商品表中的商品

 <OrderItem>
    <ASIN>B00AW9A53Q</ASIN>
    <SKU>SiM13</SKU>
    <ItemStatus>Unshipped</ItemStatus>
    <ProductName>Chicco 500ml Body Lotion</ProductName>
    <Quantity>1</Quantity>
    <ItemPrice>
      <Component>
        <Type>Principal</Type>
        <Amount currency="INR">390.0</Amount>
      </Component>
    </ItemPrice>
  </OrderItem>
</Order>

请任何人都可以为此提供解决方案..我将非常感激。

1 个答案:

答案 0 :(得分:0)

假设您的XML在名为XML的{​​{1}}类型的SQL变量中,您可以在问题的第一部分使用它:

@Input

我不太清楚你想要对你的问题的第二部分做什么 - 是否有多个INSERT INTO dbo.Order(AmazonOrderID, MerchantOrderID, PurchaseDate, LastUpdateDate, OrderStatus, SalesChannel) SELECT AmazonOrderID = @input.value('(/Order/AmazonOrderID)[1]', 'varchar(25)'), MerchantOrderID = @input.value('(/Order/MerchantOrderID)[1]', 'varchar(25)'), PurchaseDate = @input.value('(/Order/PurchaseDate)[1]', 'datetimeoffset'), LastUpdatedDate = @input.value('(/Order/LastUpdatedDate)[1]', 'datetimeoffset'), OrderStatus = @input.value('(/Order/OrderStatus)[1]', 'varchar(20)'), SalesChannel = @input.value('(/Order/SalesChannel)[1]', 'varchar(50)') 条目?你想对嵌套的<OrderItem>结构做什么?

你是什么意思 amazonid作为外键 - 你指的是什么<ItemPrice>