代码之家  ›  专栏  ›  技术社区  ›  Ilia G

SSIS:从XML文件到多个表

  •  4
  • Ilia G  · 技术社区  · 15 年前

    所以我今天才开始挖掘SSIS,所以如果有什么明显的东西我遗漏了,不要太讨厌。

    所以我有一个XML文件(来自第三方)

    <root>
        <foo>
            <fooId>12345</fooId>
            <name>FOO</name>
            <bars>
                <bar>BAR 1</bar>
                <bar>BAR 2</bar>
                [...]
            </bars>
        </foo>
        [...]
    </root>
    

    以及数据库中相应的表:

    带字段的栏(BarID(identity PK)、FooID、Name)

    所以基本上Bar就像Foo的一组属性。

    foo , bars bar ). 问题是 集合包含 酒吧 酒吧 酒吧 fooId

    问题是:如何正确地做到这一点?

    3 回复  |  直到 15 年前
        1
  •  1
  •   MikeAinOz    15 年前

    我还不担心优化性能。只需添加另一个SSIS步骤来转换数据集。

    当你有整个工作的时候,回顾一下你的表现。SSIS转换比XSLT更易于维护。成百上千的foo应该不是问题,这取决于您运行模块的频率。我已经有一段时间没有使用SSIS了,所以我在这方面还不是很快,但我使用的是XSLT,如果保持简单,额外的SSIS步骤更容易维护。

    只是我的意见。

        2
  •  1
  •   Christian Loris    15 年前

    我还没有机会在SSIS中使用任何XML数据源。BizTalk是我们的首选工具。不管怎样,我做了一点研究,在这里发现了一篇非常有用的文章:

    http://blogs.msdn.com/b/mattm/archive/2007/12/11/using-xml-source.aspx

    请遵循有关处理多个输出的部分,但请执行以下操作:

    1. 用元素替换对其元素的所有引用

    因此,基于此,根据本文设置XML数据源。使用上面提到的potins,用高级属性编辑器修改它。获取bar和bar的两个输出,并将它们路由到merge join中。内部在bars\u Id上连接它们。选择bar和foo\u Id作为输出列。这可以喂饱你的吧台。

    我知道这不是理想的,因为你是排序和合并加入。希望通过在XML数据源中进行排序,不会对性能产生太大影响。

    http://blogs.msdn.com/b/mattm/archive/2007/12/15/xml-source-making-things-easier-with-xslt.aspx

    祝你好运!

        3
  •  1
  •   Shlomo    15 年前

    @你对Chris的评论是:有一个简单的方法可以在一个对象上添加一个列。在数据流任务中添加一个步骤,使用“派生列”转换步骤。在其中,添加/操作所需的列。

    XSLT是一个难题。