Ето една възможна опция, която демонстрира как да заредите множество 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 Source“, след това върху Properties и задайте 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: