2016-06-14 2 views
2

필자가 제공 한 샘플 XML 파일을 사용하여 파일의 데이터를 데이터베이스로 가져올 수 있는지 개념 증명을하고 있습니다. 다음과 같이XML 데이터를 추출하고 데이터베이스에로드하십시오 (가능한 접근 방식)

XML 파일이 표시됩니다 :

우리가에 관심이있는 것은 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> 

의 값입니다

<?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> 

이것이 일반적인 테이블이라고 상상해보십시오. 어떻게 데이터를 삽입 할 수 있습니까?

결국 나는 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! 다음과 같이 사용했습니다 : tcvalue ('column [1]', (열 [4] ','nvarchar (최대) ') 형식 , tcvalue ('column [5] ','nvarchar) ') 비고 from @ XML.nodes ('// row ') t (c) 여기에는 c.value ('./ column [1] ','varchar (max) '') – Trowa

+0

@Trowa, 환호. –