Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de l'utilitaire BCP de Linux pour importer et exporter des données
L'utilitaire BCP (Bulk Copy Program) fournit un moyen efficace de transférer de grandes quantités de données entre votre instance de base de données RDS pour SQL Server et les fichiers de données. Vous pouvez utiliser le BCP à partir d'environnements Linux pour effectuer des opérations de données en masse, ce qui le rend utile pour la migration des données, les processus ETL et les transferts de données réguliers.
Le BCP prend en charge à la fois l'importation de données depuis des fichiers vers des tables SQL Server et l'exportation de données depuis des tables SQL Server vers des fichiers. Cela est particulièrement efficace pour le transfert de données structurées dans différents formats, y compris des fichiers texte délimités.
Prérequis
Avant d'utiliser BCP avec votre instance de base de données RDS pour SQL Server depuis Linux, assurez-vous de disposer des éléments suivants :
-
Un environnement Linux avec connectivité réseau à votre instance de base de données RDS pour SQL Server
-
Outils de ligne de commande Microsoft SQL Server installés sur votre système Linux, notamment :
sqlcmd - Outil de requête en ligne de commande SQL Server
bcp - Utilitaire du programme Bulk Copy
-
Informations d'identification valides pour votre instance de base de données RDS pour SQL Server
-
Accès au réseau configuré via des groupes de sécurité pour autoriser les connexions sur le port SQL Server (généralement 1433)
-
Autorisations de base de données appropriées pour les opérations que vous souhaitez effectuer
Installation des outils de ligne de commande SQL Server sous Linux
Pour utiliser BCP depuis Linux, vous devez installer les outils de ligne de commande Microsoft SQL Server. Pour obtenir des instructions d'installation détaillées pour votre distribution Linux spécifique, consultez la documentation Microsoft suivante :
-
Installez sqlcmd et bcp, les outils de ligne de commande de SQL Server sous Linux
-
utilitaire bcp
- Référence complète pour l'utilitaire BCP
Après l'installation, assurez-vous que les outils sont disponibles dans votre PATH en exécutant :
bcp -v sqlcmd -?
Exportation de données depuis RDS for SQL Server
Vous pouvez utiliser BCP pour exporter les données de votre instance de base de données RDS pour SQL Server vers des fichiers de votre système Linux. Cela est utile pour créer des sauvegardes, analyser des données ou préparer des données pour la migration.
Syntaxe d'exportation de base
La syntaxe de base pour exporter des données à l'aide du protocole BCP est la suivante :
bcp
database.schema.table
out output_file -S server_name -Uusername
-Ppassword
[options]
Où :
database.schema.table
- Le nom complet de la tableoutput_file
- Le chemin et le nom du fichier de sortieserver_name
- Votre point de terminaison RDS pour SQL Serverusername
- Nom d'utilisateur de votre base de donnéespassword
- Votre mot de passe de base de données
Exemple d'exportation
L'exemple suivant exporte des données depuis une table nommée customers
dans la sales
base de données :
bcp sales.dbo.customers out /home/user/customers.txt \ -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \ -U
admin
\ -Pmypassword
\ -c \ -t "|" \ -r "\n"
Cette commande :
Exporte les données de la
customers
tableEnregistre la sortie dans
/home/user/customers.txt
Utilise le format de caractères (
-c
)Utilise le tube (|) comme délimiteur de champ ()
-t "|"
Utilise une nouvelle ligne comme délimiteur de ligne ()
-r "\n"
Importation de données vers RDS pour SQL Server
Vous pouvez utiliser BCP pour importer des données à partir de fichiers de votre système Linux dans votre instance de base de données RDS for SQL Server. Cela est utile pour la migration des données, le chargement des données de test ou les mises à jour régulières des données.
Syntaxe d'importation de base
La syntaxe de base pour importer des données à l'aide du protocole BCP est la suivante :
bcp
database.schema.table
in input_file -Sserver_name
-Uusername
-Ppassword
[options]
Où :
database.schema.table
- Le nom complet de la table de destinationinput_file
- Le chemin et le nom du fichier d'entréeserver_name
- Votre point de terminaison RDS pour SQL Serverusername
- Nom d'utilisateur de votre base de donnéespassword
- Votre mot de passe de base de données
Exemple d'importation
L'exemple suivant importe des données d'un fichier dans une table nommée customers
:
bcp sales.dbo.customers in /home/user/customers.txt \ -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \ -U
admin
\ -Pmypassword
\ -c \ -t "|" \ -r "\n" \ -b 1000
Cette commande :
Importe des données dans le
customers
tableauLit les données de
/home/user/customers.txt
Utilise le format de caractères (
-c
)Utilise le tube (|) comme délimiteur de champ ()
-t "|"
Utilise une nouvelle ligne comme délimiteur de ligne ()
-r "\n"
Traite les données par lots de 1 000 lignes ()
-b 1000
Options BCP courantes
Le BCP propose de nombreuses options pour contrôler le formatage des données et le comportement de transfert. Le tableau suivant décrit les options couramment utilisées :
Option | Description |
---|---|
-c |
Utilise le type de données de type caractère pour toutes les colonnes |
-n |
Utilise les types de données natifs des bases |
-t |
Spécifie le délimiteur de champ (la valeur par défaut est tab) |
-r |
Spécifie le délimiteur de ligne (la valeur par défaut est une nouvelle ligne) |
-b |
Spécifie la taille du lot pour les opérations groupées |
-F |
Spécifie la première ligne à exporter ou à importer |
-L |
Spécifie la dernière ligne à exporter ou à importer |
-e |
Spécifie un fichier d'erreur pour capturer les lignes rejetées |
-f |
Spécifie un fichier de format pour le formatage des données |
-q |
Utilise des identifiants entre guillemets pour les noms d'objets |
Bonnes pratiques et considérations
Lorsque vous utilisez BCP avec RDS pour SQL Server à partir de Linux, tenez compte des meilleures pratiques suivantes :
-
Utiliser le traitement par lots : pour les grands ensembles de données, utilisez l'
-b
option permettant de traiter les données par lots. Cela améliore les performances et permet une meilleure récupération des erreurs. -
Gérez les erreurs avec élégance : utilisez
-e
cette option pour capturer les informations relatives aux erreurs et les lignes rejetées dans un fichier distinct à des fins d'analyse. -
Choisissez les formats de données appropriés : utilisez le format de caractères (
-c
) pour la compatibilité multiplateforme ou le format natif (-n
) pour de meilleures performances lorsque la source et la destination sont SQL Server. -
Sécurisez vos informations d'identification : évitez de saisir des mots de passe directement dans les lignes de commande. Envisagez d'utiliser des variables d'environnement ou des fichiers de configuration dotés des autorisations appropriées.
-
Testez avec de petits ensembles de données : avant de traiter de grandes quantités de données, testez vos commandes BCP avec des ensembles de données plus petits pour vérifier le formatage et la connectivité.
-
Surveillez la connectivité réseau : garantissez des connexions réseau stables, en particulier pour les transferts de données importants. Envisagez d'utiliser des outils tels que
screen
outmux
pour des opérations de longue durée. -
Valider l'intégrité des données : après le transfert des données, vérifiez le nombre de lignes et les échantillons de données pour vous assurer que l'opération s'est bien déroulée.
Résolution des problèmes courants
Le tableau suivant décrit les problèmes courants que vous pouvez rencontrer lors de l'utilisation de BCP depuis Linux et leurs solutions :
Problème | Solution |
---|---|
Expiration du délai de connexion ou erreurs réseau | Vérifiez votre point de terminaison Amazon RDS, les paramètres de votre groupe de sécurité et votre connectivité réseau. Assurez-vous que le port SQL Server (généralement 1433) est accessible depuis votre système Linux. |
Authentication failures (Échecs d’authentification) | Vérifiez votre nom d'utilisateur et votre mot de passe. Assurez-vous que l'utilisateur de la base de données dispose des autorisations appropriées pour les opérations que vous effectuez. |
Erreurs de format de données | Vérifiez vos délimiteurs de champs et de lignes. Assurez-vous que le format des données correspond aux attentes du BCP. Utilisez des fichiers de format pour les structures de données complexes. |
Erreurs de type « Autorisation refusée » | Assurez-vous que l'utilisateur de votre base de données dispose INSERT des autorisations pour les importations ou SELECT des autorisations pour les exportations sur les tables cibles. |
Problèmes liés à la gestion de fichiers volumineux | Utilisez le traitement par lots avec l'-b option. Envisagez de diviser les fichiers volumineux en petits morceaux pour améliorer les performances et corriger les erreurs. |
Problèmes de codage des caractères | Assurez-vous que vos fichiers de données utilisent un codage de caractères compatible. Utilisez l'-c option pour le format des caractères ou spécifiez les pages de code appropriées. |