gpt4 book ai didi

sql-server-2005 - SSIS从文件夹读取多个xml文件

转载 作者:行者123 更新时间:2023-12-04 04:53:52 26 4
gpt4 key购买 nike

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

非常感谢 :)

最佳答案

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

分步过程:

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

    关于sql-server-2005 - SSIS从文件夹读取多个xml文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6956409/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com