为SQL 2005寻找一个好的Bulk Insert XML Shredding示例

时间:2008-10-21 20:28:16

标签: xml sql-server-2005 shred

需要一点帮助。我收到的xml文件类似于:

<?xml version="1.0" encoding="utf-16"?>
<dc:GRANTEE xsi:schemaLocation="http://www.blahblahblah.com/FullSchema test.xsd " xmlns:dc="http://www.blahblahblah.com/FullSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RPGID>90CU0024</RPGID>
    <PLANID>01</PLANID>
    <CASE>
        <CASEID>100001</CASEID>
        <RPGID>90CU0024</RPGID>
        <FILE_O>2008-02-08T00:00:00</FILE_O>
        <ADULT>
            <ADULTID>100001A1</ADULTID>
            <CASEID>100001</CASEID>
            <APRIMARY>1</APRIMARY>
            <ARLTNSHP>BM</ARLTNSHP>
            <ADOB>1978-12-03T00:00:00</ADOB>
            <ARACAI>1</ARACAI>
            <ASEX>2</ASEX>
            <SATX>
                <SATXID>MD2120378</SATXID>
                <ADULTID>100001A1</ADULTID>
                <SAASSESS>2008-02-22T00:00:00</SAASSESS>
                <PUBPRVTX>1</PUBPRVTX>
                <TXADMIT>2008-02-23T00:00:00</TXADMIT>
                <TXSET>5</TXSET>
            </SATX>
        </ADULT>
        <CHILD>
            <CHILDID>100001C1</CHILDID>
            <CASEID>100001</CASEID>
            <CINDEX>1</CINDEX>
            <CHBDATE>2008-02-05T00:00:00</CHBDATE>
            <CHSEX>1</CHSEX>
            <CHRACAI>0</CHRACAI>
            <MALTX>
                <MALTXID>10000023</MALTXID>
                <CHILDID>100001C1</CHILDID>
                <RPTDT>2008-02-05T00:00:00</RPTDT>
                <CHMAL1>2</CHMAL1>
             </MALTX>
         </CHILD>
    </CASE>

我需要做的是导入它并将其粉碎到具有存储过程的表。我一直无法找到除了网上书籍中的例子的一般反刍以外的任何内容,呃,在线。我需要的是一个小的语法演练,它显示了我如何批量插入文件(使用OPENROWSET?)然后获取所有数据并将其拆分为匹配表,同时保持键。看起来应该很容易,但参考资料很难得到。如果我需要,我也可以访问模式,也可以注释。

有人有很好的参考吗?

1 个答案:

答案 0 :(得分:1)

您可以使用带有RAW关键字的BULK INSERT语句将数据加载到具有单个列的表中。它会将整个文档放在一行中。然后查询表并将数据放入数据类型为XML的变量中。

这个blog post显示了如何从XML文档中获取数据。