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

S’applique à :SQL Server sur 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 SQL Server tables dans des fichiers de données. À l’exception de l’option de requête, bcp ne nécessite aucune connaissance de Transact-SQL. L’utilitaire en ligne de commande bcp fonctionne avec Microsoft SQL Server s’exécutant localement ou dans le cloud, sur Linux, Windows ou Docker et 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 allez créer un exemple de base de données et de table sur l’instance de SQL Server locale (localhost), puis utiliser bcp pour charger dans l’exemple de table à partir d’un fichier texte sur le disque.

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

Commencez 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 de SQL Server locale (localhost). N’oubliez pas de remplacer le username et le <password>, si nécessaire, avant d’exécuter les commandes.

Votre mot de passe doit suivre la stratégie de mot de passe par défaut de SQL Server . Par défaut, le mot de passe doit comporter au moins huit caractères longs et contenir des caractères de trois des quatre jeux suivants : lettres majuscules, lettres minuscules, chiffres en base 10 et symboles. Les mots de passe peuvent comporter jusqu’à 128 caractères. Utilisez des mots de passe aussi longs et complexes que possible.

Créer la base de données BcpSampleDB :

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

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

sqlcmd -S localhost -U sa -P <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 SQL Server locale (localhost) et importer les données 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 <password>, si nécessaire, avant d’exécuter les commandes.

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

Voici une brève vue d’ensemble des paramètres de ligne de commande que bcp nous avons utilisés 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 le délimiteur 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 délimiteur de ligne personnalisé. 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 <password>, si nécessaire, avant d’exécuter la commande.

sqlcmd -S localhost -d BcpSampleDB -U sa -P <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 utilisez bcp pour exporter des données à partir de l’exemple de table que nous avons créé précédemment vers un nouveau fichier de données.

Copiez et collez les commandes suivantes dans la fenêtre du terminal. Ces commandes utilisent l’utilitaire bcp de ligne de commande pour exporter des données de la table TestEmployees de 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 <password>, si nécessaire, avant d’exécuter la commande.

bcp TestEmployees out ~/test_export.txt -S localhost -U sa -P <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