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.Itemsen utilisant le script donné sous Scripts SQL section. - Créez un fichier XSD nommé
Items.xsddans 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.xmletItems_3.xmldans 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,FilePathetFolderPathcomme indiqué dans la capture d'écran #1 . - Sur les gestionnaires de connexion du package, créez une connexion OLE DB nommée
SQLServerpour se connecter à l'instance SQL Server comme indiqué dans la capture d'écran #2 . - Sur le
Control Flow, placez unForeach loop containeret uneData Flow Taskdans le conteneur de boucle Foreach comme indiqué dans la capture d'écran #3 . - Configurer le
Foreach Loop containercomme le montrent les captures d'écran #4 et #5 . - Double-cliquez sur la
Data Flow Taskpour accéder auData Flowlanguette. Placer uneXML Sourcecomposant et uneOLE DB Destinationcomme indiqué dans la capture d'écran #6 . - Configurer la
XML Sourcecomme 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 Destinationcomme 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.Itemscontient 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="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>
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 :
