Copie en bloc de données avec bcp pour SQL Server sur Linux

S’applique à :SQL Server - Linux

Cet article explique comment utiliser l’utilitaire bcp pour copier en bloc des données entre une instance de SQL Server sur Linux et un fichier de données dans un format spécifié par l’utilisateur.

Vous pouvez utiliser bcp pour importer un grand nombre de lignes dans des tables SQL Server ou pour exporter des données de tables SQL Server vers des fichiers de données. Sauf lorsqu'il est utilisé avec l'option queryout, bcp ne nécessite aucune connaissance de Transact-SQL. L'utilitaire en ligne de commande bcp fonctionne avec Microsoft SQL Server en local ou dans le cloud, sur Linux, Windows ou Docker, ainsi qu’avec Azure SQL Database et Azure Synapse Analytics.

Cet article vous montre comment :

  • Importer des données dans une table à l’aide de la commande bcp in
  • Importer des données à partir d’une table à l’aide de la commande bcp out

Installer les outils en ligne de commande SQL Server

bcp fait partie des outils en ligne de commande SQL Server qui ne sont pas installés automatiquement avec SQL Server sur Linux. Si vous n’avez pas encore installé les outils en ligne de commande SQL Server sur votre machine Linux, vous devez les installer. Pour plus d’informations sur l’installation des outils, sélectionnez votre distribution Linux dans la liste suivante :

Importer des données avec bcp

Dans ce tutoriel, vous créez une base de données et une table échantillon sur l'instance locale de SQL Server (localhost), puis vous utilisez bcp pour charger la table d'exemple à partir d'un fichier texte sur le disque.

Créer un exemple de base de données et de table

Commençons par créer un exemple de base de données avec une table simple utilisée dans le reste de ce didacticiel.

  1. Sur votre boîte Linux, ouvrez un terminal de commande.

  2. Copiez et collez les commandes suivantes dans la fenêtre du terminal. Ces commandes utilisent l'utilitaire de ligne de commande sqlcmd pour créer un exemple de base de données (BcpSampleDB) et une table (TestEmployees) sur l’instance locale SQL Server (localhost). N’oubliez pas de remplacer le username et le <your_password>, si nécessaire, avant d’exécuter les commandes.

Créer la base de données BcpSampleDB :

sqlcmd -S localhost -U sa -P <your_password> -Q "CREATE DATABASE BcpSampleDB;"

Créer la table TestEmployees dans la base de données BcpSampleDB :

sqlcmd -S localhost -U sa -P <your_password> -d BcpSampleDB -Q "CREATE TABLE TestEmployees (Id INT IDENTITY(1,1) NOT NULL PRIMARY KEY, Name NVARCHAR(50), Location NVARCHAR(50));"

Créer le fichier de données source

Copiez et collez la commande suivante dans la fenêtre du terminal. Nous utilisons la commande cat prédéfinie pour créer un exemple de fichier de données textuelles avec trois enregistrements. Sauvegardez le fichier dans votre répertoire personnel sous le nom ~/test_data.txt. Les champs des enregistrements sont délimités par une virgule.

cat > ~/test_data.txt << EOF
1,Jared,Australia
2,Nikita,India
3,Tom,Germany
EOF

Vous pouvez vérifier que le fichier de données a été créé correctement en exécutant la commande suivante dans la fenêtre du terminal :

cat ~/test_data.txt

Ce qui suit s’affiche dans la fenêtre du terminal :

1,Jared,Australia
2,Nikita,India
3,Tom,Germany

Importer des données à partir du fichier de données source

Copiez et collez les commandes suivantes dans la fenêtre du terminal. Cette commande utilise bcp pour se connecter à l’instance locale SQL Server (localhost) et importer les données à partir du fichier de données (~/test_data.txt) dans la table (TestEmployees) dans la base de données (BcpSampleDB). N’oubliez pas de remplacer le nom d’utilisateur et le <your_password>, si nécessaire, avant d’exécuter les commandes.

bcp TestEmployees in ~/test_data.txt -S localhost -U sa -P <your_password> -d BcpSampleDB -c -t  ','

Voici une brève vue d’ensemble des paramètres de ligne de commande utilisés avec bcp dans cet exemple :

  • -S : spécifie l’instance de SQL Server à laquelle se connecter
  • -U : spécifie l'ID de connexion utilisé pour se connecter à SQL Server
  • -P : spécifie le mot de passe de l’ID de connexion
  • -d : spécifie la base de données à laquelle se connecter
  • -c : effectue des opérations en utilisant un type de données caractères
  • -t : spécifie la marque de fin de champ. Nous utilisons comma en tant que marque de fin de champ pour les enregistrements dans notre fichier de données

Remarque

Dans cet exemple, nous ne spécifions pas de terminal de ligne personnalisée. Les lignes du fichier de données texte étaient correctement terminées par newline lorsque nous avons utilisé la commande cat pour créer le fichier de données précédemment.

Vous pouvez vérifier que les données ont été correctement importées en exécutant la commande suivante dans la fenêtre du terminal. N’oubliez pas de remplacer le username et le <your_password>, si nécessaire, avant d’exécuter la commande.

sqlcmd -S localhost -d BcpSampleDB -U sa -P <your_password> -I -Q "SELECT * FROM TestEmployees;"

Les résultats suivants doivent s’afficher :

Id          Name                Location
----------- ------------------- -------------------
          1 Jared               Australia
          2 Nikita              India
          3 Tom                 Germany

Exporter des données avec bcp

Dans ce tutoriel, vous allez utiliser bcp pour exporter des données à partir de la table échantillon que nous avons créée précédemment dans un nouveau fichier de données.

Copiez et collez les commandes suivantes dans la fenêtre du terminal. Ces commandes utilisent l'utilitaire de ligne de commande bcp pour exporter des données à partir de la table TestEmployees dans la base de données BcpSampleDB vers un nouveau fichier de données appelé ~/test_export.txt. N’oubliez pas de remplacer le nom d’utilisateur et le <your_password>, si nécessaire, avant d’exécuter la commande.

bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <your_password> -d BcpSampleDB -c -t ','

Vous pouvez vérifier que les données ont été exportées correctement en exécutant la commande suivante dans la fenêtre du terminal :

cat ~/test_export.txt

Ce qui suit s’affiche dans la fenêtre du terminal :

1,Jared,Australia
2,Nikita,India
3,Tom,Germany