如何使用SSIS包将XML文件加载到数据库中? [英] How to load an XML file into a database using an SSIS package?

查看:72
本文介绍了如何使用SSIS包将XML文件加载到数据库中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Visual Studio 2008中使用SSIS。我需要处理许多XML文件并将其放入现有的DB结构(SQL Server 2005)中。这是我第一次使用SSIS的尝试,有点卡住了。我找到了XML数据流任务,为它分配了一个测试xml文件及其关联的XSD,并将一个节点映射到了数据库表。我的问题是,如何将许多xsd节点与许多表相关联?当然,我不必为每个表设置XML源吗?

I am using SSIS in Visual Studio 2008. I have many XML files that I need to process and place into an existing DB structure (SQL Server 2005). This is my first attempt at using SSIS and am a little stuck. I have found the XML Data Flow task, assigned it a test xml file and it's associated XSD, and mapped one node to a Database Table. My question is, how do I associate many xsd nodes with many tables? Surely I don't have to set up an XML source for each table?

推荐答案

下面是一个可能的示例,它演示了如何将具有相同定义的多个XML文件加载到SQL Server表中。该示例使用 SQL Server 2008 R2 SSIS 2008 R2 。此处显示的示例在 XML Source 组件的帮助下,使用SSIS 数据流任务将三个XML文件加载到SQL表中。

Here is a possible option which demonstrates how to load multiple XML files having same definition into an SQL Server table. The example uses SQL Server 2008 R2 and SSIS 2008 R2. The example shown here loads three XML files into an SQL table using SSIS Data Flow Task with the help of XML Source component.

分步过程:


  1. 使用 SQL脚本部分中给出的脚本创建名为 dbo.Items 的表。

  2. 创建一个使用 XSD文件下提供的内容在文件夹路径 C:\temp\xsd 中名为 Items.xsd 的XSD文件。 strong>部分。

  3. 创建三个XML文件,即 Items_1.xml Items_2.xml C:\temp\xml 中的$ c>和 Items_3.xml ,使用 XML文件部分。

  4. 在程序包上,创建3个变量,即 FileExtension FilePath FolderPath ,如屏幕快照# 1 中所示。

  5. 在程序包的连接管理器上,创建名为 SQLServer 的OLE DB连接以连接到SQL Server实例,如屏幕快照# 2 中所示。

  6. 控制流选项卡上,放置一个 Foreach循环容器和一个数据流如截图# 3 所示,在Foreach循环容器中执行任务

  7. 配置 Foreach循环容器,如屏幕快照# 4 和# 5 中所示。

  8. 双击数据流任务导航到数据流标签。放置一个 XML Source 组件和一个 OLE DB目标,如屏幕快照# 6 所示。

  9. 配置 XML源,如屏幕快照# 7 和# 8 。 XML文件路径将从变量 FilePath 中检索。此变量将由 Foreach循环容器填充。

  10. 配置 OLE DB目标,如屏幕快照# 9 和# 10 中所示。

  11. 屏幕快照# 11 和# 12 显示程序包执行。

  12. 屏幕截图# 13 显示程序包执行前 的表数据。屏幕截图# 14 显示了包执行后 后的表数据。现在,表 dbo.Items 中的数据包含三个XML文件中的数据。

  1. Create a table named dbo.Items using the script given under SQL Scripts section.
  2. Create an XSD file named Items.xsd in the folder path C:\temp\xsd using the content provided under XSD File section.
  3. Create three XML files namely Items_1.xml, Items_2.xml and Items_3.xml in the folder path C:\temp\xml using the content provided under XML Files section.
  4. On the package, create 3 variables namely FileExtension, FilePath and FolderPath as shown in screenshot #1.
  5. On the package's Connection Managers, create an OLE DB Connection named SQLServer to connect to the SQL Server Instance as shown in screenshot #2.
  6. On the Control Flow tab, place a Foreach loop container and a Data Flow Task within the Foreach loop container as shown in screenshot #3.
  7. Configure the Foreach Loop container as shown in screenshots #4 and #5.
  8. Double-click on the Data Flow Task to navigate to the Data Flow tab. Place an XML Source component and an OLE DB Destination as shown in screenshot #6.
  9. Configure the XML Source as shown in screenshot #7 and #8. The XML file path will be retrieved from the variable FilePath. This variable will be populated by the Foreach Loop container.
  10. Configure the OLE DB Destination as shown in screenshots #9 and #10.
  11. Screenshots #11 and #12 show the package execution.
  12. Screenshot #13 shows the table data before the package execution. Screenshot #14 shows the table data after the package execution. The data in the table dbo.Items now contains the data present in three XML files.

希望有帮助。

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:

这篇关于如何使用SSIS包将XML文件加载到数据库中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆