Hier is een mogelijke optie die laat zien hoe meerdere XML-bestanden met dezelfde definitie in een SQL Server-tabel kunnen worden geladen. Het voorbeeld gebruikt SQL Server 2008 R2
en SSIS 2008 R2
. Het hier getoonde voorbeeld laadt drie XML-bestanden in een SQL-tabel met behulp van SSIS Data Flow Task
met behulp van XML Source
onderdeel.
Stapsgewijs proces:
- Maak een tabel met de naam
dbo.Items
met behulp van het script gegeven onder SQL-scripts sectie. - Maak een XSD-bestand met de naam
Items.xsd
in het mappad C:\temp\xsd met behulp van de inhoud onder XSD-bestand sectie. - Maak drie XML-bestanden, namelijk
Items_1.xml
,Items_2.xml
enItems_3.xml
in het mappad C:\temp\xml met behulp van de inhoud onder XML-bestanden sectie. - Maak op het pakket 3 variabelen, namelijk
FileExtension
,FilePath
enFolderPath
zoals getoond in screenshot #1 . - Maak in de verbindingsmanagers van het pakket een OLE DB-verbinding met de naam
SQLServer
om verbinding te maken met de SQL Server-instantie zoals weergegeven in screenshot #2 . - Op de
Control Flow
tab, plaats eenForeach loop container
en eenData Flow Task
binnen de Forreach-luscontainer zoals weergegeven in screenshot #3 . - Configureer de
Foreach Loop container
zoals getoond in screenshots #4 en #5 . - Dubbelklik op de
Data Flow Task
om naar deData Flow
te navigeren tabblad. Plaats eenXML Source
component en eenOLE DB Destination
zoals getoond in screenshot #6 . - Configureer de
XML Source
zoals getoond in screenshot #7 en #8 . Het XML-bestandspad wordt opgehaald uit de variabele FilePath . Deze variabele wordt gevuld door deForeach Loop container
. Opmerking: In latere versies van Visual Studio zal XML Source zal fout uit vanwege de eigenschap ValidateExternalMetadata. Om dit op te lossen, klikt u één keer op "XML-bron" en vervolgens op Eigenschappen en stelt u ValidateExternalMetadata in op False . - Configureer de
OLE DB Destination
zoals getoond in screenshots #9 en #10 . - Schermafbeeldingen #11 en #12 toon de uitvoering van het pakket.
- Screenshot #13 toont de tabelgegevens voor de pakketuitvoering. Schermafbeelding #14 toont de tabelgegevens na de pakketuitvoering. De gegevens in de tabel
dbo.Items
bevat nu de gegevens die aanwezig zijn in drie XML-bestanden.
Ik hoop dat dat helpt.
SQL-scripts:
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-bestand
<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-bestanden
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>
Screenshot #1:
Screenshot #2:
Screenshot #3:
Screenshot #4:
Screenshot #5:
Screenshot #6:
Screenshot #7:
Screenshot #8:
Screenshot #9:
Schermafbeelding #10:
Screenshot #11:
Schermafbeelding #12:
Screenshot #13:
Screenshot #14: