SQL - Exporter le contenu d’une table

Brouillon

À venir

0 commentaire

Lors du développement d’une application utilisant une base de données on peut avoir besoin d’initialiser des tables avec quelques lignes. Par exemple il est utile qu’une table “Category” contienne quelques lignes dès le démarrage de l’application. On crée donc ces lignes dans la base de données avec l’outil que l’on souhaite (rarement une ligne SQL INSERT) puis exporter ces lignes fraichement créées pour que les autres développeurs puissent les ajouter sur leur poste.

Dans la suite de l’article nous allons voir 2 façons d’exporter et importer des données : soit en générant un script SQL, soit en utilisant l’utilitaire BCP.

Microsoft SQL Server Database Publishing Wizard

SQL Server Management Studio fourni un assistant pour générer un script SQL à partir d’une base de données :

Il est possible de filtrer les éléments à générer. Si vous voulez exporter les données d’une ou plusieurs tables, il suffit de cocher les tables souhaitées :

De nombreuses options de génération sont disponibles dans les options avancées :

Par défaut seul le schéma est générer, il faut donc changer cette option :

Et voila, l’assistant génère un fichier ressemblant à :

Cette méthode est simple grâce à l’assistant. De nombreuses options sont disponibles pour personnaliser le script final.

Note : Avant d’être intégré à SQL Server Management Studio, SQL Server Publishing Wizard était un outil à part (http://go.microsoft.com/fwlink/?LinkId=119368).


A lire sur le même sujet : Requête récursive avec SQL Server

Avec Visual Studio

Visual Studio 2015 permet également de générer des scripts à partir des données d’une table :

Et voilà :

Contrairement à la première solution, on peut exporter seulement les données d’une table à la fois. C’est donc un peu moins pratique si on veut exporter les données de plusieurs tables mais ça peut suffire dans certains cas…

BCP

BCP (Bulk Copy) est un utilitaire en ligne de commande permettant d’exporter ou d’importer rapidement des données. Contrairement aux solutions précédentes le fichier généré n’est pas une suite de commandes INSERT, mais un fichier texte ou natif (selon les options)

Exporter

bcp Sample.dbo.Employee out "%USERPROFILE%\desktop\export.dat" –n -N -T -S (LocalDb)\MSSQLLocalDB

Le fichier généré est un fichier peu lisible par un humain mais facile à importer par SQL Server :

Importer

bcp Sample.dbo.Employee in "%USERPROFILE%\desktop\export.dat" –n -N -T -S (LocalDb)\MSSQLLocalDB

ou en SQL

BULK INSERT dbo.Employee    
   FROM 'C:\users\meziantou\desktop\export.dat'     
   WITH (DATAFILETYPE='widenative');

BCP dispose de nombreuses options pour personnaliser l’export et l’import. Par exemple “-E” permet de conserver les valeurs d’une colonne auto-incrémentée.


Conclusion

Vous avez maintenant le choix entre 3 méthodes différentes pour exporter les lignes d’une ou plusieurs tables. Si vous n’avez pas besoin de générer un script SQL à base d’INSERT, il est préférable d’utiliser BCP car plus rapide. En cherchant un peu sur internet vous pouvez également trouver des procédures stockées pour générer les INSERT (un exemple), cependant elles sont souvent compliquées et il est difficile de savoir si elles fonctionnent correctement…


BannièreV2-LBComplexité

SoftFluent France

Profil de l'auteur