Voici une option possible qui montre comment charger plusieurs fichiers XML ayant la même définition dans une table SQL Server. L'exemple utilise SQL Server 2008 R2
et SSIS 2008 R2
. L'exemple présenté ici charge trois fichiers XML dans une table SQL à l'aide de SSIS Data Flow Task
à l'aide de XML Source
composant.
Processus étape par étape :
- Créez une table nommée
dbo.Items
en utilisant le script donné sous Scripts SQL section. - Créez un fichier XSD nommé
Items.xsd
dans le chemin du dossier C:\temp\xsd en utilisant le contenu fourni sous Fichier XSD section. - Créez trois fichiers XML, à savoir
Items_1.xml
,Items_2.xml
etItems_3.xml
dans le chemin du dossier C:\temp\xml en utilisant le contenu fourni sous Fichiers XML section. - Sur le package, créez 3 variables à savoir
FileExtension
,FilePath
etFolderPath
comme indiqué dans la capture d'écran #1 . - Sur les gestionnaires de connexion du package, créez une connexion OLE DB nommée
SQLServer
pour se connecter à l'instance SQL Server comme indiqué dans la capture d'écran #2 . - Sur le
Control Flow
, placez unForeach loop container
et uneData Flow Task
dans le conteneur de boucle Foreach comme indiqué dans la capture d'écran #3 . - Configurer le
Foreach Loop container
comme le montrent les captures d'écran #4 et #5 . - Double-cliquez sur la
Data Flow Task
pour accéder auData Flow
languette. Placer uneXML Source
composant et uneOLE DB Destination
comme indiqué dans la capture d'écran #6 . - Configurer la
XML Source
comme indiqué dans la capture d'écran #7 et #8 . Le chemin du fichier XML sera récupéré à partir de la variable FilePath . Cette variable sera renseignée par leForeach Loop container
. Remarque : Dans les versions ultérieures de Visual Studio, XML Source sera erreur en raison de la propriété ValidateExternalMetadata. Pour résoudre ce problème, cliquez une fois sur "Source XML", puis sur Propriétés et définissez ValidateExternalMetadata sur False . - Configurer la
OLE DB Destination
comme le montrent les captures d'écran #9 et #10 . - Captures d'écran #11 et #12 montrer l'exécution du package.
- Capture d'écran #13 affiche les données du tableau avant l'exécution du paquet. Capture d'écran #14 affiche les données du tableau après l'exécution du paquet. Les données de la table
dbo.Items
contient maintenant les données présentes dans trois fichiers XML.
J'espère que ça aide.
Scripts 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
Fichier 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>
Fichiers 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>
Capture d'écran 1 :
Capture d'écran 2 :
Capture d'écran 3 :
Capture d'écran 4 :
Capture d'écran #5 :
Capture d'écran 6 :
Capture d'écran n° 7 :
Capture d'écran 8 :
Capture d'écran #9 :
Capture d'écran 10 :
Capture d'écran 11 :
Capture d'écran 12 :
Capture d'écran 13 :
Capture d'écran 14 :