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