【问题标题】:SSIS reading multiple xml files from folderSSIS从文件夹中读取多个xml文件
【发布时间】:2011-08-05 12:39:50
【问题描述】:

大家好,我是 SSIS 的新手,我想读取特定文件夹中的一堆 xml 文件。我想读取 xml 文件并将数据输出到数据库表中。但是我有点困惑从哪里开始。有人能指出我正确的方向吗?我在互联网上进行了搜索,但所有教程似乎都涵盖了循环遍历 txt 文件而不是 xml 文件。如果这有什么不同,我将使用 sql server 2005。

非常感谢:)

【问题讨论】:

    标签: sql-server-2005 ssis


    【解决方案1】:

    这是一个可能的选项,它演示了如何将具有相同定义的多个 XML 文件加载到 SQL Server 表中。该示例使用SQL Server 2008 R2SSIS 2008 R2。此处显示的示例在 XML Source 组件的帮助下使用 SSIS Data Flow Task 将三个 XML 文件加载到 SQL 表中。

    分步过程:

    1. 使用 SQL 脚本 部分中提供的脚本创建一个名为 dbo.Items 的表。
    2. 使用 XSD 文件 部分下提供的内容在文件夹路径 C:\temp\xsd 中创建一个名为 Items.xsd 的 XSD 文件。
    3. 使用XML Files下提供的内容在文件夹路径C:\temp\xml中创建三个XML文件,即Items_1.xmlItems_2.xmlItems_3.xml部分。
    4. 在包上,创建 3 个变量,即 FileExtensionFilePathFolderPath,如屏幕截图 #1 所示。
    5. 在包的连接管理器上,创建一个名为 SQLServer 的 OLE DB 连接以连接到 SQL Server 实例,如屏幕截图 #2 所示。
    6. Control Flow 选项卡上,将 Foreach loop containerData Flow Task 放置在 Foreach 循环容器中,如屏幕截图 #3 所示。
    7. 如屏幕截图 #4 和 #5 所示配置 Foreach Loop container
    8. 双击Data Flow Task 导航到Data Flow 选项卡。放置一个XML Source 组件和一个OLE DB Destination,如屏幕截图#6所示。
    9. 如屏幕截图 #7 和 #8 所示配置XML Source。 XML 文件路径将从变量 FilePath 中检索。此变量将由Foreach Loop container 填充。 注意:在更高版本的 Visual Studio 中,由于 ValidateExternalMetadata 属性,XML Source 出错。要解决此问题,请单击“XML 源”,然后单击“属性”并将 ValidateExternalMetadata 设置为 False
    10. 如屏幕截图 #9 和 #10 所示配置OLE DB Destination
    11. 屏幕截图 #11 和 #12 显示了包的执行情况。
    12. 屏幕截图 #13 显示了包执行之前的表数据。屏幕截图 #14 显示了包执行之后的表数据。表 dbo.Items 中的数据现在包含三个 XML 文件中的数据。

    希望对您有所帮助。

    SQL 脚本:

    CREATE TABLE [dbo].[Items](
        [Id] [int] IDENTITY(1,1) NOT NULL,
        [ItemNumber] [nvarchar](50) NOT NULL,
        [ItemName] [nvarchar](60) NOT NULL,
        [Price] [numeric](18, 2) NOT NULL,
    CONSTRAINT [PK_Items] PRIMARY KEY CLUSTERED ([Id] ASC)) ON [PRIMARY]
    GO
    

    XSD 文件

    <xsd:schema xmlns:schema="ItemsXSDSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" targetNamespace="ItemsXSDSchema" elementFormDefault="qualified">
        <xsd:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />
        <xsd:element name="Items">
            <xsd:complexType>
                <xsd:sequence>
                    <xsd:element minOccurs="0" maxOccurs="unbounded" name="Item">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="Id" type="sqltypes:int" />
                                <xsd:element name="ItemNumber">
                                    <xsd:simpleType>
                                        <xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth" sqltypes:sqlSortId="52">
                                            <xsd:maxLength value="20" />
                                        </xsd:restriction>
                                    </xsd:simpleType>
                                </xsd:element>
                                <xsd:element name="ItemName">
                                    <xsd:simpleType>
                                        <xsd:restriction base="sqltypes:nvarchar" sqltypes:localeId="1033" sqltypes:sqlCompareOptions="IgnoreCase IgnoreKanaType IgnoreWidth" sqltypes:sqlSortId="52">
                                            <xsd:maxLength value="60" />
                                        </xsd:restriction>
                                    </xsd:simpleType>
                                </xsd:element>
                                <xsd:element name="Price">
                                    <xsd:simpleType>
                                        <xsd:restriction base="sqltypes:numeric">
                                            <xsd:totalDigits value="18" />
                                            <xsd:fractionDigits value="2" />
                                        </xsd:restriction>
                                    </xsd:simpleType>
                                </xsd:element>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>
        </xsd:element>
    </xsd:schema>
    

    XML 文件

    Items_1.xml

    <?xml version="1.0"?>
    <Items xmlns="ItemsXSDSchema">  
        <Item>
            <Id>1</Id>
            <ItemNumber>I2345343</ItemNumber>
            <ItemName>Monitor</ItemName>
            <Price>299.99</Price>
        </Item>
    </Items>
    

    Items_2.xml

    <?xml version="1.0"?>
    <Items xmlns="ItemsXSDSchema">  
        <Item>
            <Id>1</Id>
            <ItemNumber>J1231231</ItemNumber>
            <ItemName>Mouse</ItemName>
            <Price>29.99</Price>
        </Item>
    </Items>
    

    Items_3.xml

    <?xml version="1.0"?>
    <Items xmlns="ItemsXSDSchema">  
        <Item>
            <Id>1</Id>
            <ItemNumber>K0456212</ItemNumber>
            <ItemName>Keyboard</ItemName>
            <Price>49.99</Price>
        </Item>
    </Items>
    

    屏幕截图 #1:

    屏幕截图 #2:

    截图#3:

    屏幕截图 #4:

    屏幕截图 #5:

    屏幕截图 #6:

    截图#7:

    截图#8:

    屏幕截图 #9:

    屏幕截图 #10:

    屏幕截图 #11:

    屏幕截图 #12:

    屏幕截图 #13:

    屏幕截图 #14:

    【讨论】:

    • 这真是一个惊人的解释。感谢您提供详细而详尽的版本
    猜你喜欢
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 2015-07-19
    相关资源
    最近更新 更多