【问题标题】:Process multi-level xml with collection in element使用元素中的集合处理多级 xml
【发布时间】:2011-09-22 09:39:07
【问题描述】:

我有一个 xml 文档,我将使用 SSIS 2005 将其解析为一个 SQL 表。 但是我遇到了一些麻烦,因为它是多层次的并且在每个帖子中都包含集合(?)。 我找到了一种使用 SSIS 中的 Merge Join 将多级 XML 放到一行的解决方案,但是我无法找到一种方法来处理多个 元素以将它们放到一行。

希望有人能帮我解决这个问题。

编辑:
所以我希望输出在一行中包含以下数据。

Personnummer, fornamn, efternamn, kon, epost, avdelning, foretagsnr, anstnr, 
arbetsledare, signatur, pkontering3, adress.hemadress.gatuadress, 
adress.hemadress.adress2, adress.hemadress.co_adress, adress.hemadress.postnr,
adress.hemadress.postort, adress.hemadress.land, adress.mobiltelefon.telefonnr,
adress.hemtelefon.telefonnr

希望您能理解我的 adress.hemadress/mobiletelefon/hemtelefon 表示法。 元素不使用 atm,如果将使用它, 的相同解决方案可能会起作用。 :)

这是 xml 结构的示例,您可以看到 元素中有三个 元素,我希望它们都输出到一行。如果可以根据 元素中的文本忽略 元素中的某些元素,那就太好了,但我想我可以在没有该功能的情况下进行管理。

<PersonCollection> 
  <Person>
    <Personnummer>190001010101</Personnummer> 
    <Fornamn>firstname</Fornamn> 
    <Efternamn>lastname</Efternamn> 
    <Kon>K</Kon>
    <Epost>mail@mail.com</Epost> 
    <Avdelning>B</Avdelning> 
    <Foretagsnr>1</Foretagsnr> 
    <Anstnr>1</Anstnr> 
    <Arbetsledare>firstname lastname</Arbetsledare>
    <Signatur>X</Signatur> 
    <PKontering3>XXXX</PKontering3> 
    <Befattningar> 
        <Befattning> 
            <Status>X</Status>
            <Namn>Position</Namn> 
        </Befattning> 
    </Befattningar> 
    <Adresser>
        <Adress>
            <Adresstyp>Hemadress</Adresstyp> 
            <Telefonnr /> 
            <Gatuadress>Streetadress 1</Gatuadress> 
            <Adress2 /> 
            <Co_Adress /> 
            <Postnr>111 22</Postnr> 
            <Postort>City</Postort> 
            <Land>Country</Land> 
        </Adress>
        <Adress>
            <Adresstyp>Mobiltelefon</Adresstyp> 
            <Telefonnr>010-010 01 01</Telefonnr>
            <Gatuadress /> 
            <Adress2 /> 
            <Co_Adress /> 
            <Postnr /> 
            <Postort /> 
            <Land /> 
        </Adress>
        <Adress>
            <Adresstyp>Hemtelefon</Adresstyp> 
            <Telefonnr>01-01 01 01</Telefonnr> 
            <Gatuadress /> 
            <Adress2 /> 
            <Co_Adress /> 
            <Postnr /> 
            <Postort /> 
            <Land /> 
        </Adress>
    </Adresser>
  </Person>
</PersonCollection>

【问题讨论】:

  • 您希望地址元素与 Person 记录放在一行还是单独一行?
  • 与人同排一排。我将编辑并添加说明。

标签: xml ssis


【解决方案1】:

我通过在我的 SSIS 中使用三个 SQL Server 目标并将 的输出指向一个表,将 指向一个表,然后将 (仅包含 personid 和 adresserid)指向一个表来解决这个问题与地址和人员表匹配。 然后我使用 SQL Server 中的视图将我想要的信息放在一起,并使用 SSIS 生成的 personid 和 adresserid(是 SSIS 为我的 xml 生成了 ids 吗?)。

但我仍然很好奇它是否可以在 SSIS 内部解决。

【讨论】:

    猜你喜欢
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多