2016-06-14 11 views
2

私のカウンターパートは、サンプルXMLファイルを提供しており、ファイル内のデータをデータベースにインポートできるかどうかを検証しています。XMLデータを抽出してデータベースにロードする(可能なアプローチ)

次のようにXMLファイルが表示されている:私たちはと興味を持っている何

<?xml version="1.0" encoding="UTF-8" ?> 
<xmloutfile> 
<header> 
<TYPE>XLFT</TYPE> 
<DN>C001</DN> 
</header> 
<table> 
<row> 
<column></column> 
<column></column> 
<column></column> 
<column></column> 
<column></column></row> 
<row> 
<column></column> 
<column></column> 
<column></column> 
<column></column> 
<column></column></row> 
<row> 
<column>ID</column> 
<column>Title</column> 
<column>Type</column> 
<column>Country</column> 
<column></column></row> 
<row> 
<column>12345</column> 
<column>ABC</column> 
<column>SN</column> 
<column>Hong Kong</column> 
<column></column></row> 
<row> 
<column>17777</column> 
<column></column> 
<column>MO</column> 
<column>China</column> 
<column></column></row> 
<row> 
<column></column> 
<column></column> 
<column></column> 
<column></column> 
<column></column></row></table></xmloutfile> 

IDの値である、タイトル、タイプ、国(そしておそらく発言)

<column>ID</column> 
<column>Title</column> 
<column>Type</column> 
<column>Country</column> 
<column></column></row> 
<row> 
<column>12345</column> 
<column>ABC</column> 
<column>SN</column> 
<column>Hong Kong</column> 
<column></column></row> 

これが一般的な表であると想像してください。どうすればこれらのデータを挿入できますか?

最終的に私はSSISを使用したいと思いますが、現時点では(SSIS経由でできればよいですが)実現可能なアプローチを評価したいだけです。 TKS

+0

、あなたはすべての空の行/列を削除したいですか? –

答えて

1

のXQuery:つまり

declare @x xml ='<xmloutfile> 
    <header> 
    <TYPE>XLFT</TYPE> 
    <DN>C001</DN> 
    </header> 
    <table> 
    <row> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
    </row> 
    <row> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
    </row> 
    <row> 
     <column>ID</column> 
     <column>Title</column> 
     <column>Type</column> 
     <column>Country</column> 
     <column></column> 
    </row> 
    <row> 
     <column>12345</column> 
     <column>ABC</column> 
     <column>SN</column> 
     <column>Hong Kong</column> 
     <column></column> 
    </row> 
    <row> 
     <column>17777</column> 
     <column></column> 
     <column>MO</column> 
     <column>China</column> 
     <column></column> 
    </row> 
    <row> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
     <column></column> 
    </row> 
    </table> 
</xmloutfile>' 


select t.c.value('column[1]', 'nvarchar(max)') 
    , t.c.value('column[2]', 'nvarchar(max)') 
    , t.c.value('column[3]', 'nvarchar(max)') 
    , t.c.value('column[4]', 'nvarchar(max)') 
    , t.c.value('column[5]', 'nvarchar(max)') 
from @x.nodes('//row') t(c) 
+0

偉大なtks! ID: 、tcvalue( 'column [2]'、 'nvarchar(max)')タイトル: 、tcvalue( 'nvarchar(max)列 '3'、 'nvarchar(max)')タイプ 、tcvalue( 'column [4]'、 'nvarchar(max)'国 、tcvalue( 'column [5]'、 'nvarchar(max) ) ')備考 @ XML.nodes(' // row ')t(c) ここでc.value(' ./ column [1] '、' varchar(max) '') – Trowa

+0

@Trowa、歓声。 –

関連する問題