1

複数の要素と属性を持つ xml があり (以下の例を参照)、そこから SQL テーブル/テーブルを作成したいと考えています。

XML の例:

<prgs>
 <prg Id="1" >
   <name>Xulescu</name>
   <type>Human</type>
   <attribs>
     <attrib>doesn't matter</attrib>
   </attribs>
   <timeZone>doesn't matter</timeZone>
   <URL>doesn't matter/</URL>

 .....
</prgs>

このような表を作る必要があります

ID       |      Name
-------------------------
1        |      Xulescu
......

ありがとうございました

別の状況

これはどうですか ?

<schedules type="tip1">
  <schedule prgsId="15361" >
     <event Id="1234" date="2012-10-05">
       <times>
         <time>01:00</time>
       </times>
     </event>
     <event Id="2345" date="2012-10-05">
       <times>
         <time>01:30</time>
       </times>
     </event>

   

結果はテーブルになるはずです

    ID     ScheduleID      PrgsID        showId     Date     Time
  .................................................................
   1        xxx            xxxx          1234     2012-10-05   01:00
   2        xxx            xxxx          2345     2012-10-05   01:30

ID は自動インクリメント フィールドです

ScheduleID, PrgsIDFKキーです

4

1 に答える 1

1

このようなもの:

DECLARE @XmlFile XML

SELECT @XmlFile = CAST(BulkColumn AS XML)
FROM OPENROWSET (BULK 'C:\temp\sample.xml' , SINGLE_BLOB) AS XMLDATA

SELECT
    ID = Prgs.value('@Id', 'int'),
    Name = Prgs.value('(name)[1]', 'varchar(50)')
FROM 
    @XmlFile.nodes('/prgs/prg') AS XTbl(Prgs)

ファイルに次の XML が含まれている場合:

<prgs>
 <prg Id="1" >
   <name>Xulescu</name>
   <type>Human</type>
</prg>
 <prg Id="2" >
   <name>Xulescu2</name>
   <type>Human</type>
</prg>
</prgs>

次の出力が得られます。

ID  Name
------------
1   Xulescu
2   Xulescu2

更新:追加のシナリオについて - これはどうですか? (既に@XML変数に XML 構造があると仮定します):

INSERT INTO dbo.YourTable(ScheduleID, PrgsID, ShowId, [Date], [Time])
   SELECT
       Sched.value('@prgsId', 'int'),
       Sched.value('@prgsId', 'int'),
       Events.value('@Id', 'int'),
       Events.value('@date', 'date'),
       Events.value('(times/time)[1]', 'varchar(50)')
   FROM
       @XML.nodes('/schedules/schedule') AS XTbl(Sched)
   CROSS APPLY
       Sched.nodes('event') AS XTbl2(Events)

ScheduleIdどのように/どの属性が必要なのかわからない-属性がPrgsId1 つしか表示されない ...PrgsId<schedule>

于 2012-11-27T12:27:09.667 に答える