Oto możliwa opcja, która pokazuje, jak załadować wiele plików XML o tej samej definicji do tabeli SQL Server. W przykładzie użyto SQL Server 2008 R2
i SSIS 2008 R2
. Pokazany tutaj przykład ładuje trzy pliki XML do tabeli SQL za pomocą SSIS Data Flow Task
za pomocą XML Source
składnik.
Proces krok po kroku:
- Utwórz tabelę o nazwie
dbo.Items
za pomocą skryptu podanego w Skrypty SQL sekcja. - Utwórz plik XSD o nazwie
Items.xsd
w ścieżce folderu C:\temp\xsd za pomocą treści dostarczonych w Pliku XSD sekcja. - Utwórz trzy pliki XML, a mianowicie
Items_1.xml
,Items_2.xml
iItems_3.xml
w ścieżce folderu C:\temp\xml za pomocą treści dostarczonych w Plikach XML sekcja. - W pakiecie utwórz 3 zmienne, a mianowicie
FileExtension
,FilePath
iFolderPath
jak pokazano na zrzucie ekranu #1 . - W menedżerach połączeń pakietu utwórz połączenie OLE DB o nazwie
SQLServer
aby połączyć się z instancją SQL Server, jak pokazano na zrzucie ekranu #2 . - W
Control Flow
umieśćForeach loop container
iData Flow Task
w kontenerze pętli Foreach, jak pokazano na zrzucie ekranu #3 . - Skonfiguruj
Foreach Loop container
jak pokazano na zrzutach ekranu #4 i #5 . - Kliknij dwukrotnie
Data Flow Task
aby przejść doData Flow
patka. UmieśćXML Source
komponent iOLE DB Destination
jak pokazano na zrzucie ekranu #6 . - Skonfiguruj
XML Source
jak pokazano na zrzucie ekranu #7 i #8 . Ścieżka do pliku XML zostanie pobrana ze zmiennej FilePath . Ta zmienna zostanie wypełniona przezForeach Loop container
. Uwaga: W późniejszych wersjach programu Visual Studio źródło XML będzie błąd z powodu właściwości ValidateExternalMetadata. Aby to naprawić, kliknij raz „Źródło XML”, a następnie Właściwości i ustaw ValidateExternalMetadata na Fałsz . - Skonfiguruj
OLE DB Destination
jak pokazano na zrzutach ekranu #9 i #10 . - Zrzuty ekranu nr 11 i #12 pokaż wykonanie pakietu.
- Zrzut ekranu nr 13 pokazuje dane tabeli przed wykonanie pakietu. Zrzut ekranu #14 pokazuje dane tabeli po wykonanie pakietu. Dane w tabeli
dbo.Items
teraz zawiera dane obecne w trzech plikach XML.
Mam nadzieję, że to pomoże.
Skrypty 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
Plik 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>
Pliki 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>
Zrzut ekranu nr 1:
Zrzut ekranu nr 2:
Zrzut ekranu nr 3:
Zrzut ekranu nr 4:
Zrzut ekranu nr 5:
Zrzut ekranu nr 6:
Zrzut ekranu nr 7:
Zrzut ekranu nr 8:
Zrzut ekranu nr 9:
Zrzut ekranu nr 10:
Zrzut ekranu nr 11:
Zrzut ekranu nr 12:
Zrzut ekranu nr 13:
Zrzut ekranu nr 14: