Вот возможный вариант, который демонстрирует, как загрузить несколько файлов 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
поместите Foreach loop container
и Data 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 XML Source будет выдавать ошибку из-за свойства ValidateExternalMetadata.Чтобы это исправить, нажмите «Источник 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: