Hier ist eine mögliche Option, die zeigt, wie mehrere XML-Dateien mit derselben Definition in eine SQL Server-Tabelle geladen werden. Das Beispiel verwendet SQL Server 2008 R2
und SSIS 2008 R2
. Das hier gezeigte Beispiel lädt drei XML-Dateien mithilfe von SSIS Data Flow Task
in eine SQL-Tabelle mit Hilfe von XML Source
Komponente.
Schritt-für-Schritt-Prozess:
- Erstellen Sie eine Tabelle namens
dbo.Items
mit dem unter SQL-Skripts angegebenen Skript Abschnitt. - Erstellen Sie eine XSD-Datei namens
Items.xsd
im Ordnerpfad C:\temp\xsd unter Verwendung der unter XSD-Datei bereitgestellten Inhalte Abschnitt. - Erstellen Sie drei XML-Dateien, nämlich
Items_1.xml
,Items_2.xml
undItems_3.xml
im Ordnerpfad C:\temp\xml unter Verwendung der unter XML-Dateien bereitgestellten Inhalte Abschnitt. - Erstellen Sie auf dem Paket 3 Variablen, nämlich
FileExtension
,FilePath
undFolderPath
wie in Screenshot #1 gezeigt . - Erstellen Sie in den Verbindungs-Managern des Pakets eine OLE DB-Verbindung mit dem Namen
SQLServer
um sich mit der SQL Server-Instanz zu verbinden, wie in Screenshot #2 gezeigt . - Auf dem
Control Flow
platzieren Sie einenForeach loop container
und eineData Flow Task
innerhalb des Foreach-Schleifencontainers, wie in Screenshot #3 gezeigt . - Konfigurieren Sie den
Foreach Loop container
wie in Screenshots #4 gezeigt und #5 . - Doppelklicken Sie auf die
Data Flow Task
um zumData Flow
zu navigieren Tab. Platzieren Sie eineXML Source
Komponente und einOLE DB Destination
wie in Screenshot #6 gezeigt . - Konfigurieren Sie die
XML Source
wie in Screenshot #7 gezeigt und #8 . Der XML-Dateipfad wird aus der Variable FilePath abgerufen . Diese Variable wird vomForeach Loop container
gefüllt . Hinweis: In späteren Versionen von Visual Studio wird XML Source wird Fehler aufgrund der ValidateExternalMetadata-Eigenschaft. Um dies zu beheben, klicken Sie einmal auf „XML-Quelle“, dann auf Eigenschaften und setzen Sie ValidateExternalMetadata auf False . - Konfigurieren Sie das
OLE DB Destination
wie in Screenshots #9 gezeigt und #10 . - Screenshots Nr. 11 und #12 Zeigt die Paketausführung an.
- Screenshot #13 zeigt die Tabellendaten vorher die Paketausführung. Screenshot Nr. 14 zeigt die Tabellendaten nach die Paketausführung. Die Daten in der Tabelle
dbo.Items
enthält nun die vorhandenen Daten in drei XML-Dateien.
Hoffe das hilft.
SQL-Skripts:
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-Datei
<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-Dateien
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 Nr. 2:
Screenshot 3:
Screenshot #4:
Screenshot Nr. 5:
Screenshot Nr. 6:
Screenshot #7:
Screenshot #8:
Screenshot Nr. 9:
Screenshot Nr. 10:
Screenshot Nr. 11:
Screenshot Nr. 12:
Screenshot Nr. 13:
Screenshot Nr. 14: