我的对手为我们提供了一个示例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)