【问题标题】:Bulk Insert Multiple (More than 1000 XML file) XML files with SSIS 2008 R2使用 SSIS 2008 R2 批量插入多个(超过 1000 个 XML 文件)XML 文件
【发布时间】:2014-06-29 07:56:17
【问题描述】:

我有以下一个 XML 文件,我需要将它们批量插入 SQL 服务器,我有超过 1000 个 XML,我想为此目的使用 SSIS,请问有什么想法吗? 所有具有相同属性但数据内容不同的 XML。

    <?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<VFPData>
    <cr_attributes>
        <headerexpression>1-108-201403-18-A01276</headerexpression>
        <timesheetfield>cc2</timesheetfield>
        <sessioninstance>d425d70e-7baf-4f6f-8302-a327b7ded320</sessioninstance>
        <originvalue/>
        <pagenum>1</pagenum>
        <pageaddress>81.1865.11.78</pageaddress>
        <fieldid>860002635</fieldid>
        <fieldname>TS6CCode2</fieldname>
        <interpretaccuracy>100</interpretaccuracy>
        <timestamp>4/1/2014 3:53:28 PM</timestamp>
        <pen>AJX-AA7-D98-UX</pen>
        <validationlink/>
        <cfieldvalue>5300330</cfieldvalue>
        <crowkey>18-A01276</crowkey>
        <calias>PayCard</calias>
        <lvaluechanged>true</lvaluechanged>
    </cr_attributes>
    <cr_attributes>
        <headerexpression>1-108-201403-18-A01276</headerexpression>
        <timesheetfield>cc2_sub</timesheetfield>
        <sessioninstance>d425d70e-7baf-4f6f-8302-a327b7ded320</sessioninstance>
        <originvalue/>
        <pagenum>1</pagenum>
        <pageaddress>81.1865.11.78</pageaddress>
        <fieldid>860002642</fieldid>
        <fieldname>TS6SCode2</fieldname>
        <interpretaccuracy>100</interpretaccuracy>
        <timestamp>4/1/2014 3:53:32 PM</timestamp>
        <pen>AJX-AA7-D98-UX</pen>
        <validationlink/>
        <cfieldvalue>000002</cfieldvalue>
        <crowkey>18-A01276</crowkey>
        <calias>PayCard</calias>
        <lvaluechanged>true</lvaluechanged>
    </cr_attributes>
    <cr_attributes>
        <headerexpression>1-108-201403-18-A01276</headerexpression>
        <timesheetfield>hr_cc2</timesheetfield>
        <sessioninstance>d425d70e-7baf-4f6f-8302-a327b7ded320</sessioninstance>
        <originvalue>.0</originvalue>
        <pagenum>1</pagenum>
        <pageaddress>81.1865.11.78</pageaddress>
        <fieldid>860002658</fieldid>
        <fieldname>TS6HRCC21</fieldname>
        <interpretaccuracy>100</interpretaccuracy>
        <timestamp>4/1/2014 3:53:20 PM</timestamp>
        <pen>AJX-AA7-D98-UX</pen>
        <validationlink/>
        <cfieldvalue>08</cfieldvalue>
        <crowkey>T24112-FAROOQ AHMAD</crowkey>
        <calias>PayIn</calias>
        <lvaluechanged>true</lvaluechanged>
    </cr_attributes>
</VFPData>

【问题讨论】:

    标签: sql xml sql-server-2008 ssis business-intelligence


    【解决方案1】:

    所需组件:

    遍历 1000 个 xml 文件 - 使用 Foreach 循环容器

    读取每个 xml 文件 - 使用 XML Source 组件

    将 xml 加载到数据库中 - 使用 OLE DB 目标组件

    动态更改 xml 文件路径 - 使用表达式和变量。

    在遍历每个 XML 文件时,每次都需要更改 XML Source 连接。因此,为了使这个动态化,您需要创建变量来存储 XML 文件路径(从 Foreach 循环容器中获取),并将此变量设置为 XML Source 连接管理器属性。

    以下资源将为您提供逐步演练以了解上述组件。

    Working with Variables

    SSIS Expressions Basics

    Working with Property Expressions

    第一步SSIS BASICS: Introducing the Foreach Loop Container

    第二步MSDN - XML Source

    第三步Loading XML Using SSIS

    第四步Loading multiple XML file from the file system into a SQL Server table using SSIS.

    由于您要处理 1000 个具有相同架构但数据长度范围不同的 xml 文件,因此 SSIS 自动生成的架构/XSD 可能会发生变化,不支持数据内容(长度和类型),您需要调整自动生成 XSD 以涵盖数据类型和数据长度。您可以在this thread(文章的最后一部分)中找到有关如何手动更改 XSD 的指南。

    【讨论】:

    • 感谢您的帮助,如果可能,您能否具体说明如何在更多点上使用 foreach 循环容器?
    • 基本配置 foerach 循环以从文件夹中检索所有这些 XML 文件。所以它是 XML 文件路径的集合。然后将数据流任务放到 foreach 容器中。然后将您的逻辑将 XML 上传到 DFT 的控制流中的数据库。通过使用变量使源连接属性动态化,以便每次 foreach 循环遍历文件路径的集合,然后它应该每次都将新的文件路径传递给源连接管理器。
    • 我没有得到你的最后一件事“通过使用变量使源连接属性动态化,以便每次 foreach 循环遍历文件路径的集合,然后它应该将新的文件路径传递给源连接管理器每次“我已经为每个容器创建了多个路径,并且已经创建了多个变量,但是在读取具有相同架构的所有 XML 之后,它仍然循环并且没有在数据中插入任何行,我怎么能让一旦没有文件将它们插入数据库@Vikramsinh Shinde,作业就退出conatier
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多