2010-04-13 8 views
5

J'ai un schéma XSD complexe et des centaines de fichiers XML conformes au schéma. Comment automatiser la création de tables SQL Server connexes pour stocker les données XML?Comment créer une base de données à partir d'un schéma XSD et importer des données XML

J'ai envisagé de créer des classes C# à partir du schéma XSD en utilisant l'outil xsd.exe et de laisser quelque chose comme la figure Subsonic comment faire une base de données brillante sur, mais pas sûr que ce soit la meilleure façon d'aborder il.

Est-ce que quelqu'un a réussi à importer élégamment des fichiers XSD dans SQL Server?

Une question similaire avec de bonnes réponses: How can I create database tables from XSD files?

Répondre

9

Je vous suggère d'utiliser SQL Server Integration Services, qui est livré avec SQL Server 2008 ou 2005 (ou services Data Transformation si votre coincé avec 2000). Malheureusement, il ne vient pas avec la version gratuite "Express" de SQL Server, cependant l'édition de SQL Server Developer peut être utilisée pour < 100 $ qui a la fonctionnalité complète de SQL Server Standard et répondrait à vos besoins.

SSIS est un grand sujet et je ne vais pas aller au-dessus de toutes les cloches et de sifflets ici, mais fondamentalement, vous:

  • Créer un nouveau projet SSIS en utilisant BIDS (Business Intelligence Development Studio, une version modifiée Visual Studio fourni avec SSIS)
  • Faites glisser une nouvelle tâche de flux de données sur la surface du flux de contrôle, puis cliquez sur l'onglet du flux de données.
  • Faites glisser une "source XML" de la boîte à outils dans le panneau de flux de données, puis configurez les emplacements des fichiers XSD et XML.
  • Faites glisser une destination de données ADO.NET de la boîte à outils vers le flux de données et connectez l'une des sorties de la source XML à l'entrée de la destination ADO.NET. Si vous souhaitez créer une nouvelle table basée sur les données du schéma xml plutôt que d'en utiliser une existante, cliquez sur "Nouveau" lorsque vous spécifiez les paramètres du gestionnaire de connexion dans la destination ADO.NET et générez et exécutez la table de création appropriée déclaration. Répétez cette opération pour toutes les autres sorties de la source XML (il y en aura une pour chaque table logique générée à partir du schéma).

Vous aurez très probablement besoin d'utiliser d'autres objets de transformation de données pour transformer les données avant de les charger dans le serveur SQL, mais c'est l'essentiel. Si vous devez exécuter le processus pour une grande quantité de fichiers XML, vous pouvez placer la tâche dans une boucle de contrôle et utiliser une variable pour définir l'emplacement du fichier XML.

La documentation MS sur l'utilisation d'une source XML dans SSIS est ici: http://msdn.microsoft.com/en-us/library/ms140277(v=SQL.100).aspx

+0

Merci. J'ai une licence développeur SQL Server 2008, mais pas BIDS. Je vais regarder dans SSIS. –

+0

BIDS est livré avec SQL Server Developer, et doit être installé avec SQL Server Management Studio et les autres outils client. C'est le même outil que celui que vous utilisez pour créer des rapports de services de rapports. –

+0

SSIS crée les tables, mais ce n'est que la moitié du travail. Il ne crée aucune référence parmi eux. Il fera également des suppositions sauvages sur les données, telles que 'numeric (20,0)' pour 'int'. – ajeh

5

Je viens de trouver XSD2DB on Sourceforge, selon le site:

XSD2DB est un outil de ligne de commande écrite en C#, cela lire un Microsoft fichier de schéma DataSet compatible ADO.NET (XSD) et générer une base de données.

Vérification.

+1

cela a-t-il fonctionné pour vous parce qu'il a lamentablement échoué pour moi sur un gros fichier de schéma. – IEnumerator

Questions connexes