SSIS чтение нескольких xml-файлов из папки

Привет всем, я новичок в SSIS, и я хочу прочитать кучу xml-файлов в определенной папке. Я хотел бы прочитать xml-файлы и вывести данные в таблицу базы данных. Однако я немного смущен тем, с чего начать. Кто-нибудь может указать мне правильное направление? У меня был поиск в интернете, но все учебники, похоже, охватывают цикл через txt-файлы, а не xml-файлы. Я буду использовать sql server 2005, если это имеет значение.

большое спасибо :)

1 ответов


вот возможный вариант, который демонстрирует, как загрузить несколько XML-файлов с одинаковым определением в таблицу SQL Server. В примере используется SQL Server 2008 R2 и SSIS 2008 R2. Пример, показанный здесь, загружает три XML-файла в таблицу SQL с помощью SSIS Data Flow Task С помощью XML Source компонент.

шаг за шагом процесс:

  1. создать таблицу с именем dbo.Items используя скрипт, указанный в разделе SQL-скриптов раздел.
  2. создайте XSD-файл с именем Items.xsd в папке C:\temp\xsd использование содержимого, предоставленного в разделе xsd-файл.
  3. создайте три XML-файла, а именно Items_1.xml, Items_2.xml и Items_3.xml в папке C:\temp\xml использование содержимого, предоставленного в разделе XML-файлы.
  4. на пакете создайте 3 переменные, а именно FileExtension, FilePath и FolderPath как показано в скриншот #1.
  5. в менеджерах соединений пакета создайте соединение OLE DB с именем SQLServer для подключения к экземпляру SQL Server, как показано на скриншоте #2.
  6. на Control Flow tab, поместите Foreach loop container и Data Flow Task в контейнере цикла Foreach, как показано на скриншоте #3.
  7. настройки Foreach Loop container как показано на скриншотах #4 и #5.
  8. дважды щелкните на Data Flow Task перейти к Data Flow tab. Место XML Source компонент и OLE DB Destination как показано на скриншоте #6.
  9. настройки XML Source как показано на скриншоте #7 и№8. Путь к XML-файлу будет получен из переменной FilePath. Эта переменная будет заполнена параметром Foreach Loop container.
  10. настройки OLE DB Destination как показано в скриншоты #9 и№10.
  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:

1

Скриншот #2:

2

скриншот #3:

3

скриншот #4:

4

скриншот #5:

5

скриншот #6:

6

скриншот #7:

7

скриншот #8:

8

скриншот #9:

9

скриншот #10:

10

скриншот #11:

11

скриншот № 12:

12

скриншот #13:

13

скриншот № 14:

13