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.
Sur votre boîte Linux, ouvrez un terminal de commande.
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 leusername
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 utilisonscomma
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