如何从XML到SQL创建导入脚本?

时间:2017-09-25 06:54:22

标签: sql sql-server xml

我想知道如何将XML文件中的数据导入SQL中的表中。我想将数据导入的表格如下所示。

CREATE TABLE PRODUCTINFORMATION
(EAN      INT,
 Brand    VARCHAR(30),
 Model    VARCHAR(30),
 Size     VARCHAR(5),
 Price    INT,
 Currency VARCHAR(3)
);

所以我有一个包含大量此类数据和其他数据的XML文件,但我只想从EAN,品牌,型号,尺寸,价格和货币中导入数据。但是如何制作导入脚本呢?

抱歉,如果我无法显示整个XML数据,因为它是保密的。但它看起来像这样:

<Lines>
  <Line>
    <LineNo></LineNo>
    <EANNo></EANNo>
    <CustomerItemNo />
    <ItemNo></ItemNo>
    <Description></Description>
    <Description2></Description2>
    <GrossWeight></GrossWeight>
    <NetWeight></NetWeight>
    <UnitVolume></UnitVolume>
    <UnitofMeasure></UnitofMeasure>
    <UnitPrice></UnitPrice>
    <EarliestDeliveryDate></EarliestDeliveryDate>
    <LatestDeliveryDate></LatestDeliveryDate>
    <StyleNo></StyleNo>
    <Style></Style>
    <ColourNo></ColourNo>
    <Colour></Colour>
    <SizeNo></SizeNo>
    <Size></Size>
    <MinimumQuantity></MinimumQuantity>
    <BrandCode></BrandCode>
    <BrandName></BrandName>
    <SeasonCode></SeasonCode>
    <RetailPrice></RetailPrice>
    <LineDiscountPct></LineDiscountPct>
    <NetUnitPrice></NetUnitPrice>
    <SupplierArticleGroup></SupplierArticleGroup>
    <Material />
    <PLUText />
    <CountryOfOrigin></CountryOfOrigin>
    <SeasonText></SeasonText>
    <Tariffno></Tariffno>
    <SerialNumber />
    <Width></Width>
    <Height></Height>
    <Deph></Deph>
    <FreeText />
    <References />
  </Line>
  <Line>

2 个答案:

答案 0 :(得分:0)

你需要在这里做两件事......

  1. 使用OPENROWSET将XML文件导入临时(或永久)表,将列转换为XML数据类型。
  2. 使用OPENXML或XQUERY
  3. 粉碎XML数据类型

    here

    上有一篇非常好的帖子

答案 1 :(得分:0)

你好Nikolai Lindholm,

请。检查下面的一小段代码,它可以帮助您导入xml数据。

CREATE PROC DEMO @XMLDATA XML
AS
     BEGIN
         DECLARE @Hdoc INT;
         EXEC SP_XML_PREPAREDOCUMENT
              @Hdoc OUTPUT,
              @XMLDATA;
         INSERT INTO PRODUCTINFORMATION
                SELECT XML.EAN,
                       XML.Brand,
                       XML.Model,
                       XML.Size,
                       XML.Price,
                       XML.Currency
                FROM OPENXML(@Hdoc, '/XML/Line', 2) WITH(EAN INT, Brand VARCHAR(30), Model VARCHAR(30), Size VARCHAR(5), Price INT, Currency VARCHAR(3)) XML;
     END;