を挿入:は、私は次のようなXML構造を持つXMLフィールドからリレーショナル表データに
SET @TheXML =
<MailingCompany>
<Mailman>
<Name>Jamie</Name>
<Age> 24 </Age>
<Letter>
<DestinationAddress> 440 Mountain View Parade </DestinationAddress>
<DestinationCountry> USA </DestinationCountry>
<OriginCountry> Australia </OriginCountry>
<OriginAddress> 120 St Kilda Road </OriginAddress>
</Letter>
</Mailman>
</MailingCompany>
は基本的に私は、Mailmanのと手紙の子供の抽出それぞれにクエリを書かれ、値を挿入しています次のようなリレーショナルテーブルへ:
INSERT INTO dbo.[Mailman]
SELECT
NULLIF(t.value('Name[1]','varchar(100)'),'') as Name,
NULLIF(t.value('Age[1]','varchar(10)'),'') as Age
FROM @TheXML.nodes('MailingCompany/Mailman') as MailmanTemp(t)
SET @MailPersonFK = SCOPE_IDENTITY();
INSERT INTO dbo.[Letter]
SELECT
NULLIF(t.value('DestinationAddress[1]','varchar(100)'),'') as DestinationAddress,
NULLIF(t.value('DestinationCountry[1]','varchar(100)'),'') as DestinationCountry,
NULLIF(t.value('OriginCountry[1]','varchar(100)'),'') as OriginCountry,
NULLIF(t.value('OriginAddress[1]','varchar(100)'),'') as OriginAddress
@MailPersonFK AS MailmanID
FROM @TheXML.nodes('MailingCompany/Mailman/Letter') as LetterTemp(t)
私の問題は、私が唯一のノードの名前が「データが移入されたときにMailmanのテーブルに挿入することです。ノード 'DestinationAddress'を持つレターに挿入するのと同じことです。
親ノードが常にMailingCompanyになるとは限らないことに注意してください。Mailmanには多くの文字を割り当てることができます。
ありがとうございます!
パーフェクト!どうもありがとうございました! – Mark