Bonjour à toutes et tous,
Je commence un projet d'importation d'un fichier de données XML vers une base SQL Serveur. Le fichier XML est lourd, plusieurs centaines de Mo, et doit être ré-importé chaque nuit.
D'après mes recherches, pour importer les données de la façon la plus performante possible, l'instruction XMLBulkLoad peut être utilisée, il prend en paramètres le fichier de schéma XSL et le fichier de données XML. L'instruction prend en charge la génération des tables SQL par des ordres CREATE TABLE puis l'importation des données contenues dans le XML. Un exemple complet d'utilisation est disponible ici : http://msdn.microsoft.com/fr-fr/library/ms171878.aspx
Le problème est que pour pouvoir utiliser cette instruction, le fichier XSD doit être annoté pour permettre le mapping entre les élements du schéma XML et les différentes tables de la base de données SQL. Les annotations sont du type :
- sql:relation
- sql:key-fields
- sql:relationship
- ...
- la liste complête est disponible sur la MSDN ici : http://msdn.microsoft.com/fr-fr/library/ms172699.aspx
Voici un exemple de XSD annoté pour 3 tables (Order / Customer / OrdCust) :
Visual Studio permet la génération du schéma XSD à partir du fichier de données XML mais je n'ai pas trouvé d'option qui permette de générer les annotations pour SQL Serveur. D'autres logiciels comme XMLSpy permettent de générer le schéma mais toujours sans les annotations.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" > <xsd:element name="Emp" sql:relation="Employees" > <xsd:complexType> <xsd:sequence> <xsd:element name="FName" sql:field="FirstName" type="xsd:string" /> <xsd:element name="LName" sql:field="LastName" type="xsd:string" /> </xsd:sequence> <xsd:attribute name="EmployeeID" type="xsd:integer" /> </xsd:complexType> </xsd:element> </xsd:schema>
Ma question est la suivante : existe-t-il un logiciel qui permette de générer les annotations nécessaires à SQL Serveur dans le fichier XSD ?
Merci de votre aide
Xavier
Partager