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 Flowtab, поместитеForeach loop containerиData Flow Taskв контейнере цикла Foreach, как показано на скриншоте #3. - настройки
Foreach Loop containerкак показано на скриншотах #4 и #5. - дважды щелкните на
Data Flow Taskперейти кData Flowtab. Место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:
