Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Méthodes d'exportation et d'importation des tables de base de données SQL Server

Lorsque vous travaillez en tant qu'administrateur ou développeur de base de données SQL Server, vous ne pouvez pas vivre dans votre monde SQL Server isolé sans communiquer avec d'autres sources de données. Par exemple, il y a rarement un jour où l'on ne vous demandera pas d'importer des données d'un fichier Excel, Access ou CSV dans votre table SQL Server. Ou, à l'inverse, exportez une de vos tables de base de données SQL Server vers un fichier externe afin que cette table soit utilisée dans un autre moteur de base de données ou soit analysée en externe par l'équipe correspondante.

SQL Server nous fournit un certain nombre de méthodes qui peuvent être utilisées pour exporter une table de base de données SQL Server existante vers un fichier Excel ou texte, et importer des données d'une source de données externe vers une table de base de données SQL Server nouvelle ou existante. Dans cet article, nous aborderons progressivement toutes ces méthodes.

Utilitaire BCP

L'utilitaire Bulk Copy Program, également connu sous le nom de BCP, est un utilitaire de ligne de commande qui peut être utilisé pour importer un grand nombre de lignes d'un fichier de données du système d'exploitation dans votre table de base de données SQL Server, ou exporter une table de base de données SQL Server existante vers un système d'exploitation. fichier de données système.

La syntaxe de l'outil BCP contient une grande variété d'options. Voici les plus couramment utilisés :

  • Le nom de la table ou de la vue de la base de données SQL Server :il servira de source de données en cas de processus d'exportation de données et de destination en cas de processus d'importation de données.
  • La direction des données, où IN indique l'importation de données et OUT indique l'exportation de données.
  • Le nom du fichier de données local qui servira de source en cas de processus d'importation de données et de destination en cas de processus d'exportation de données.
  • -S serveur\instance – ceci est utilisé pour spécifier le nom de l'instance SQL Server.
  • –d – ceci est utilisé pour spécifier la base de données qui contient la table source ou destination.
  • -T – ceci est utilisé pour spécifier que l'authentification Windows sera utilisée pour se connecter au serveur SQL.
  • -U nom d'utilisateur et -P mot de passe – ceux-ci spécifient le nom d'utilisateur et le mot de passe utilisés pour se connecter à l'instance SQL Server.
  • L'utilitaire Bulk Copy Program, également connu sous le nom de BCP, est un utilitaire de ligne de commande qui peut être utilisé pour importer un grand nombre de lignes d'un fichier de données du système d'exploitation dans votre table de base de données SQL Server ou pour exporter une table de base de données SQL Server existante. dans un fichier de données du système d'exploitation. – ceux-ci sont utilisés pour spécifier le format du fichier de données source ou de destination et les délimiteurs utilisés dans ce fichier de données.

Par exemple, la commande BCP ci-dessous est utilisée pour exporter le contenu de la table de base de données Employee_Main en bloc dans un fichier CSV, comme suit :

bcp AdventureWorks2016CTP3.dbo.Employee_Main out C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n

Ces données seront rapidement copiées dans un fichier CSV, comme indiqué dans le résultat ci-dessous :

Afin d'importer le contenu d'un fichier CSV dans une table de base de données, la commande BCP suivante peut être utilisée pour y parvenir rapidement en masse :

bcp AdventureWorks.dbo.Employee_Main dans C:\Test\Employees.csv -S MININT-QQBE87A -T -c -t , -r \n

Et les données seront insérées dans la table de la base de données, comme indiqué dans le résultat ci-dessous :

En passant quelques minutes à préparer ces commandes avec les options appropriées, vous pouvez facilement utiliser l'utilitaire BCP pour importer des données ou les exporter vers des fichiers de données texte.

INSERTION EN VRAC

Le BULK INSERT T-SQL l'instruction fonctionne de la même manière que BCP IN commande et est utilisée pour importer des données à partir d'un fichier de données accessible par le service SQL Server dans une table de base de données SQL Server, le tout directement dans SQL Server. Contrairement à la commande BCP IN, l'instruction BULK INSERT peut être regroupée avec d'autres opérations dans une seule transaction SQL Server qui s'exécute sous votre contrôle.

L'instruction BULK INSERT T-SQL ci-dessous peut être utilisée pour importer des données d'un fichier CSV dans une table de base de données existante, en spécifiant à la fois les délimiteurs de colonne et de ligne, comme indiqué ci-dessous :

BULK INSERT AdventureWorks.dbo.Employee_Main
FROM 'C:\Test\Employees.csv'
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
);
GO

ENSEMBLE D'OUVERTURE

La fonction OPENROWSET est utilisée pour se connecter aux sources de données à l'aide d'un fournisseur de connexion OLEDB, puis utiliser la requête T-SQL spécifiée pour récupérer les données de cette source de données. Les principaux avantages de la fonction OPENROWSET par rapport aux méthodes BCP et BULK INSERT sont les suivants :

  • vous pouvez filtrer les données récupérées par l'instruction OPENROWSET à l'aide d'une clause WHERE
  • vous pouvez l'utiliser dans une instruction SELECT pour lire les données de la source de données - pas seulement avec l'instruction INSERT

Pour utiliser l'instruction OPENROWSET, vous devez activer les requêtes distribuées ad hoc l'option de configuration du système en utilisant d'abord le script ci-dessous :

sp_configure 'show advanced options', 1;  
RECONFIGURE;
GO 
sp_configure 'Ad Hoc Distributed Queries', 1;  
RECONFIGURE;  
GO

Après avoir activé l'option de configuration du système de requêtes distribuées ad hoc, vous pouvez utiliser la fonction OPENROWSET pour importer des données dans les tables de base de données SQL Server à partir de fichiers CSV avec un format de données préalablement défini, comme indiqué dans la requête T-SQL ci-dessous :

INSERT INTO [AdventureWorks].[dbo].[Employee_Main]
([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber])
SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber] 
FROM OPENROWSET(
   BULK 'C:\Test\Employees.csv',
      FORMATFILE = 'C:\Test\Fmt.xml'
) AS rows;

Serveur lié

Le serveur lié SQL Server est un objet serveur configuré pour permettre au moteur de base de données SQL Server de se connecter à différents types de sources de données OLE DB en dehors de l'instance SQL Server. Le serveur lié peut être facilement créé à l'aide de SQL Server Management Studio ou des commandes T-SQL, comme indiqué ci-dessous :

Une fois créé, le serveur lié peut être facilement utilisé pour accéder à la source de données distante et importer les données correspondantes dans la table de base de données SQL Server, comme indiqué dans la requête T-SQL ci-dessous :

INSERT INTO [AdventureWorks].[dbo].[Employee_Main] 
([EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address])
SELECT [EMP_FirsrName],[EMP_LastName],[EMP_BirthDate],[EMP_PhoneNumber],[EMP_Address] FROM TEST...Employee_Main$

Assistant d'exportation/importation SQL Server

L'assistant d'exportation et d'importation SQL Server nous fournit une interface simple pour créer des packages SQL Server Integration Service qui peuvent être utilisés immédiatement ou enregistrés pour une utilisation ultérieure. Ces packages permettent d'importer des données et de les exporter vers une grande variété de sources de données, en partant de simples fichiers plats et en terminant par des moteurs de base de données plus complexes.

L'assistant d'exportation et d'importation peut être utilisé, par exemple, pour importer des données d'une source de données Excel dans une table de base de données existante. Les étapes suivantes décrivent ce processus :

  1. Dans l'Explorateur d'objets de SQL Server Management Studio, cliquez avec le bouton droit sur la base de données AdventureWorks qui contient la table dans laquelle vous allez écrire les données. Ensuite, choisissez Importer des données option dans les Tâches sous-menu :
  2. L'assistant d'importation et d'exportation de SQL Server s'ouvrira. Dans la section Choisir une source de données fenêtre, spécifiez le type de la source de données. Dans cet exemple particulier, nous choisirons Microsoft Excel et le chemin complet du fichier Excel souhaité. Après l'avoir spécifié, cliquez sur Suivant bouton:
  3. Dans la section Choisir une destination fenêtre, il vous sera demandé de spécifier le type de destination vers laquelle les données source seront écrites. Dans notre exemple, il s'agit de la base de données SQL Server. Il vous sera également demandé de spécifier le nom du serveur, les informations d'identification et le nom de la base de données dans laquelle se trouve la table de destination. Après avoir fourni toutes ces informations, cliquez sur Suivant procéder:
  4. Dans le champ Spécifier la copie ou la requête du tableau fenêtre, vous aurez la possibilité de copier toutes les données de la source vers une table existante ou nouvelle, ou d'écrire une requête personnalisée pour récupérer une plage spécifique de données. Lorsque cela est décidé, cliquez sur Suivant bouton:
  5. Dans Sélectionner les tables et les vues sources , spécifiez la feuille ou la table source de la source de données et la table de destination dans laquelle les données source seront écrites. Vous aurez la possibilité de prévisualiser la source, de vérifier le mappage des colonnes entre les tables source et destination et de spécifier si les données doivent être ajoutées à une table existante ou à une table nouvellement générée. Cliquez sur Suivant bouton pour continuer :
  6. Dans le package Enregistrer et exécuter Window, vous avez la possibilité d'enregistrer le package SSIS créé dans l'assistant d'importation et d'exportation pour l'exécuter immédiatement ou de l'enregistrer pour le planifier ou l'exécuter ultérieurement. Cliquez sur Suivant bouton pour continuer :
  7. Dans Terminer l'assistant fenêtre, vous verrez un résumé des options sélectionnées et des paramètres fournis. Cliquez sur Terminer bouton pour démarrer la copie des données :
  8. Après avoir terminé le processus de copie, l'assistant affichera le nombre d'enregistrements copiés dans chaque table. S'il n'y a pas d'erreurs, vous pouvez cliquer sur Fermer bouton pour fermer la fenêtre :Vous pouvez voir dans l'exemple précédent que l'assistant d'importation et d'exportation peut être facilement utilisé pour copier des données entre différents types des sources de données et des destinations, sans tenir compte de la relation entre les tables. Si la table a une contrainte de clé étrangère qui fait référence à l'une des colonnes de la table parent, vous devez gérer manuellement l'ordre du processus de copie des données. De plus, pour démarrer un nouveau processus d'importation de données, vous devrez fermer l'assistant et l'ouvrir à nouveau.

Pompe de données dbForge

dbForge Data Pump est un outil tiers inclus avec SQL Server Management Studio en tant que complément. Il peut être utilisé pour migrer facilement des données entre SQL Server et différentes sources de données externes. Il vous permet d'importer et d'exporter à partir de plus de 10 formats de données couramment utilisés (texte, MS Excel, XML, CSV, JSON, etc.) avec un certain nombre d'options et de modèles avancés pouvant être utilisés pour des scénarios récurrents.

Après avoir téléchargé dbForge Data Pump à partir de la page de téléchargement de Devart, vous devrez l'installer sur la machine en tant que complément d'outil SSMS, comme indiqué ci-dessous :

Exportation de données

dbForge Data Pump peut être utilisé dans SSMS pour exporter des données à partir d'une table de base de données SQL Server ou pour afficher des données dans 13 types de formats pris en charge, notamment HTML, Texte, MS Excel, MS Excel 2007, MS Access, RTF, PDF, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7), SQL et JSON.

Pour exporter des données à partir d'une table SQL Server spécifique, suivez les étapes ci-dessous :

  1. Connectez-vous à l'instance SQL Server via SSMS. Dans l'explorateur d'objets, cliquez avec le bouton droit sur la base de données contenant la table source et choisissez Exporter les données à partir de la pompe de données sous-menu :
  2. Dans le format d'exportation , choisissez le format du fichier dans lequel les données de la table source seront exportées ou chargez un modèle préalablement enregistré. Dans notre exemple, nous choisirons MS Excel 2007. Cliquez sur Suivant bouton pour continuer :
  3. Dans la fenêtre Source, passez en revue les détails de connexion et sélectionnez la ou les tables contenant les données source à exporter. Cliquez sur Suivant procéder:
  4. Dans les Options fenêtre, cochez et définissez les différentes options personnalisables pour la grille du tableau des données exportées. Ensuite, cliquez sur Suivant procéder:
  5. Dans les formats de données fenêtre, sous les Colonnes , sélectionnez les colonnes qui seront exportées et passez en revue leurs types de données :Aussi, dans les Formats , configurez le format des différents types de données pour les colonnes que vous avez sélectionnées. Cliquez sur Suivant bouton pour continuer :
  6. Dans les Paramètres d'impression de page fenêtre, vous pouvez définir les différentes options pour les pages de fichier exportées à des fins d'impression. Cliquez sur Suivant procéder:
  7. Dans les lignes exportées , spécifiez une plage de lignes à exporter depuis la table source ou choisissez d'exporter toutes les lignes de la table. Cliquez sur Suivant procéder:
  8. La gestion des erreurs La fenêtre vous fournit un certain nombre d'options qui peuvent être utilisées pour spécifier comment traiter les erreurs si elles se produisent et où consigner les résultats d'exécution. Cliquez sur Enregistrer le modèle pour enregistrer les paramètres en tant que modèle à utiliser ultérieurement, ou appuyez sur le bouton Exporter pour lancer le processus d'exportation des données, comme illustré ci-dessous :Pendant le processus d'exportation des données, Data Pump vous fournira des messages d'information indiquant le nombre d'enregistrements copiés à partir du tableau actuel, comme indiqué ci-dessous :Lorsque le processus d'exportation de données est terminé avec succès, un résumé du processus d'exportation s'affiche. Des options seront fournies pour ouvrir le fichier généré ou le dossier contenant et pour exporter plus de données à partir de la même page sans avoir besoin de fermer et de rouvrir l'outil :

Importation de données

dbForge Data Pump peut être utilisé dans SSMS pour importer des données dans une table de base de données SQL Server. Les 9 formats de données largement utilisés suivants sont pris en charge :Texte, MS Excel, MS Excel 2007, MS Access, XML, CSV, ODBC, DBF (Foxpro, dBase III, dBase IV, dBase 7) et JSON.

Pour importer des données d'une feuille Excel vers une table SQL Server spécifique, suivez les étapes ci-dessous :

  1. Connectez-vous à l'instance SQL Server à l'aide de SSMS. Dans l'explorateur d'objets, cliquez avec le bouton droit sur la base de données contenant la table de base de données de destination et choisissez Importer Données de la pompe de données sous-menu :
  2. Dans le fichier source fenêtre, choisissez le format du fichier source ou chargez simplement un modèle préalablement enregistré pour effectuer le processus d'importation. Dans notre exemple, nous utiliserons Microsoft Excel 2007 et cliquerons sur Parcourir bouton pour localiser la feuille Excel. Cliquez sur Suivant bouton pour continuer :
  3. Dans la destination , passez en revue les informations de connexion et spécifiez si les données doivent être importées dans une nouvelle table ou dans une table existante à partir de la liste fournie. Cliquez sur Suivant procéder:
  4. Dans les Options fenêtre, vous pouvez définir différentes options qui spécifient l'emplacement de l'en-tête et des données dans le fichier source, avec la possibilité de prévisualiser les données du fichier source avant l'importation. Cliquez sur Suivant procéder:
  5. Dans les formats de données , vous pouvez ajuster le format du type de données pour différentes colonnes de texte dans le fichier source avant de l'importer dans la table de base de données. Cliquez sur Suivant procéder:
  6. Dans le cartographie fenêtre, vous pouvez mapper les colonnes du fichier source à la table de base de données de destination, avec la possibilité de prévisualiser les données après avoir effectué la modification. Cliquez sur Suivant procéder:
  7. Dans les modes , vous pouvez spécifier le mode d'importation des données, comme ajouter les données aux données existantes dans la table de destination et effectuer une insertion en masse ou importer les données avec une seule transaction. Cliquez sur Suivant procéder:
  8. Dans la sortie fenêtre, vous pouvez spécifier de générer ou d'enregistrer le script d'importation de données ou de poursuivre immédiatement le processus d'importation de données. Cliquez sur Suivant procéder:
  9. La gestion des erreurs La fenêtre vous fournit un certain nombre d'options qui peuvent être utilisées pour spécifier comment se comporter si des erreurs se produisent et où consigner les résultats d'exécution. Cliquez sur Enregistrer le modèle pour enregistrer les paramètres en tant que modèle à utiliser ultérieurement, ou le bouton Importer pour lancer le processus d'importation des données, comme illustré ci-dessous :
  10. Lorsque le processus d'importation est terminé avec succès, l'assistant affiche un résumé du nombre d'enregistrements importés. Vous aurez la possibilité de consulter le fichier journal des erreurs au cas où des erreurs se seraient produites et d'importer d'autres fichiers à partir de la même fenêtre sans avoir besoin de fermer et de rouvrir l'outil :

Il ressort clairement de l'exemple précédent que l'outil dbForge Data Pump nous offre la possibilité d'importer et d'exporter des données vers et depuis divers formats de fichiers de données. L'assistant dédié à cela est simple à configurer, riche de différentes options et ne nécessite aucun effort de développement. Cela mérite d'être essayé !