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.Itemsmet behulp van het script gegeven onder SQL-scripts sectie. - Maak een XSD-bestand met de naam
Items.xsdin het mappad C:\temp\xsd met behulp van de inhoud onder XSD-bestand sectie. - Maak drie XML-bestanden, namelijk
Items_1.xml,Items_2.xmlenItems_3.xmlin het mappad C:\temp\xml met behulp van de inhoud onder XML-bestanden sectie. - Maak op het pakket 3 variabelen, namelijk
FileExtension,FilePathenFolderPathzoals getoond in screenshot #1 . - Maak in de verbindingsmanagers van het pakket een OLE DB-verbinding met de naam
SQLServerom verbinding te maken met de SQL Server-instantie zoals weergegeven in screenshot #2 . - Op de
Control Flowtab, plaats eenForeach loop containeren eenData Flow Taskbinnen de Forreach-luscontainer zoals weergegeven in screenshot #3 . - Configureer de
Foreach Loop containerzoals getoond in screenshots #4 en #5 . - Dubbelklik op de
Data Flow Taskom naar deData Flowte navigeren tabblad. Plaats eenXML Sourcecomponent en eenOLE DB Destinationzoals getoond in screenshot #6 . - Configureer de
XML Sourcezoals 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 Destinationzoals 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.Itemsbevat 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="https://www.w3.org/2001/XMLSchema" xmlns:sqltypes="https://schemas.microsoft.com/sqlserver/2004/sqltypes" targetNamespace="ItemsXSDSchema" elementFormDefault="qualified">
<xsd:import namespace="https://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="https://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:
