2017-08-08 20 views
1

私はこの質問を他のいくつかのメンバーから聞いてきましたが、わずかに異なるニーズがあり、私の状況に正確に関連付けることはできません。これをもう一度聞いて謝ります。XMLをSQL Serverデータベースに変換する

私は次のXMLファイルを持っています(これはその最初の部分です)、SQL Serverテーブルに変換する必要があります。

どうすれば実際に行うのですか?私はまだ初心者ですが、やや大きなプロジェクトをやろうとしています。私は多くのSQLを知らないし、SQLサーバーを通してXMLファイルを読む方法も全く分からない。私もCODETYPE要素が列として行くとあなたが@xmlという変数にあなたの全体のXMLデータを持っていると仮定すると、対応する値

<ReferenceDataItems CodeType="AboriginalOrTorresStraitIslanderOrigin"> 
    <Item> 
    <CodeValue>NO</CodeValue> 
    <CodeDescription>No</CodeDescription> 
    <OrderNumber>1</OrderNumber> 
    </Item> 
    <Item> 
    <Item> 
     <CodeValue>TSI</CodeValue> 
     <CodeDescription>Torres Strait Islander</CodeDescription> 
     <OrderNumber>3</OrderNumber> 
    </Item> 
    <Item> 
     <CodeValue>BOTH</CodeValue> 
     <CodeDescription>Aboriginal and Torres Strait Islander</CodeDescription> 
     <OrderNumber>4</OrderNumber> 
    </Item> 
    <Item> 
     <CodeValue>NOTSTATED</CodeValue> 
     <CodeDescription>Not stated/Inadequately described</CodeDescription> 
     <OrderNumber>5</OrderNumber> 
    </Item> 
</ReferenceDataItems> 
<ReferenceDataItems CodeType="AccommodationType"> 
    <Item> 
    <CodeValue>BOARDING</CodeValue> 
    <CodeDescription>Boarding house</CodeDescription> 
    <OrderNumber>1</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>TRANSITION</CodeValue> 
    <CodeDescription>Crisis, emergency or transition</CodeDescription> 
    <OrderNumber>2</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>LIVINGUNIT</CodeValue> 
    <CodeDescription>Independent living unit</CodeDescription> 
    <OrderNumber>3</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>COMMUNITY</CodeValue> 
    <CodeDescription>Indigenous community/settlement</CodeDescription> 
    <OrderNumber>4</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>INSTITUTION</CodeValue> 
    <CodeDescription>Institutional setting (i.e. residential aged care, hospital)</CodeDescription> 
    <OrderNumber>5</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>CLIENTOWNED</CodeValue> 
    <CodeDescription>Private residence - client or family owned/purchasing</CodeDescription> 
    <OrderNumber>6</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>PRIVATERENTAL</CodeValue> 
    <CodeDescription>Private residence - private rental</CodeDescription> 
    <OrderNumber>7</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>PUBLICRENTAL</CodeValue> 
    <CodeDescription>Private residence - public rental</CodeDescription> 
    <OrderNumber>8</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>PUBLICSHELTER</CodeValue> 
    <CodeDescription>Public shelter</CodeDescription> 
    <OrderNumber>9</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>SUPPORTED</CodeValue> 
    <CodeDescription>Supported accommodation</CodeDescription> 
    <OrderNumber>10</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>NOTSTATED</CodeValue> 
    <CodeDescription>Not stated</CodeDescription> 
    <OrderNumber>11</OrderNumber> 
    </Item> 
    <Item> 
    <CodeValue>OTHER</CodeValue> 
    <CodeDescription>Other</CodeDescription> 
    <OrderNumber>12</OrderNumber> 
    </Item> 
</ReferenceDataItems> 

答えて

1

を反映したい、あなたは詳細情報を抽出するために、このXQueryコードを使用することができます。

enter image description here

H:

SELECT 
    CodeType = XC.value('@CodeType', 'varchar(50)'), 
    CodeValue = XC2.value('(CodeValue)[1]', 'varchar(100)'), 
    CodeDescription = XC2.value('(CodeDescription)[1]', 'varchar(100)'), 
    OrderNumber = XC2.value('(OrderNumber)[1]', 'int') 
FROM 
    @xml.nodes('/ReferenceDataItems') AS XT(XC) 
CROSS APPLY 
    XC.nodes('Item') AS XT2(XC2) 

これは、このようなデータセットのものを返します。あなたがあなたの質問から明らかではないテーブルにこれを挿入したいのです - あなたはそれを理解する必要があります.....

+0

ありがとうございました!まず、あなたが私の投稿で行った編集を受け入れる方法がわからないのはごめんなさい。私はロールバックを押して、それは古いポストスタイルに行きました。 申し訳ありませんが、私はゲームの初心者です。 SQLサーバーを実行してこのクエリを新しいクエリとして起動する必要がありますか? テーブル呼出し 'ReferenceData'に入れたい また、これはXMLファイルのパスを入れる場所ですか? ( '/ ReferenceDataItems') –

+0

@RandikaWijekoon:あなたは何も受け入れる必要はありません - そのまま投稿をそのまま残してください - 編集して読みやすくしてください。 **ロールバックしない..... –

+0

**(1)** XMLをSQL Server変数にロードする必要があります** - Googleでは、これを行う方法を示すたくさんのリソースがあります。 **(2)**あなたは 'ReferenceData'テーブルに必要な全てのカラムがあることを確認してから、**(3)**あなたは' INSERT INTO dbo.ReferenceData(CodeType、CodeValue、CodeDescription 、OrderNumber)SELECT ...... '(そしてあなたの' INSERT'ステートメントの*ソース*として上の 'SELECT'を使用してください) –

関連する問題