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 dans 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 for SQL Server et les fichiers de données. Vous pouvez utiliser BCP dans les environnements Linux pour effectuer des opérations de données groupées. Cela le rend utile pour la migration des données, les processus ETL et les transferts de données réguliers.
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 for SQL Server dans Linux, assurez-vous de disposer des éléments suivants :
-
Un environnement Linux avec une connectivité réseau à votre instance de base de données RDS for SQL Server
-
Des outils de ligne de commande Microsoft SQL Server installés sur votre système Linux, notamment :
sqlcmd - Outil de requête de ligne de commande SQL Server
bcp - Utilitaire Bulk Copy Program
-
Des informations d’identification valides pour votre instance de base de données RDS for 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 sur Linux
Pour utiliser BCP sur 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 sur 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 des données depuis votre instance de base de données RDS for SQL Server vers des fichiers de votre système Linux. Cela est utile pour créer des sauvegardes, analyser des données ou en préparer pour la migration.
Syntaxe d’exportation de base
La syntaxe de base pour exporter des données à l’aide de BCP est la suivante :
bcpdatabase.schema.tableout output_file -S server_name -Uusername-Ppassword[options]
Où :
database.schema.table- Le nom de table entièrement qualifiéoutput_file- Le chemin et le nom du fichier de sortieserver_name- Votre point de terminaison RDS for SQL Serverusername- Votre nom d’utilisateur de 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 base de données sales :
bcp sales.dbo.customers out /home/user/customers.txt \ -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \ -Uadmin\ -Pmypassword\ -c \ -t "|" \ -r "\n"
Cette commande :
Exporte les données à partir de la table
customersEnregistrer la sortie dans
/home/user/customers.txtUtilise le format de caractères (
-c)Utilise la barre verticale (|) en tant que délimiteur de champ (
-t "|")Utilise une nouvelle ligne en tant que délimiteur de ligne (
-r "\n")
Importation de données vers RDS for SQL Server
Vous pouvez utiliser BCP pour importer des données depuis les 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 de BCP est la suivante :
bcpdatabase.schema.tablein input_file -Sserver_name-Uusername-Ppassword[options]
Où :
database.schema.table- Le nom de table de destination entièrement qualifiéinput_file- Le chemin et le nom du fichier d’entréeserver_name- Votre point de terminaison RDS for SQL Serverusername- Votre nom d’utilisateur de base de donnéespassword- Votre mot de passe de base de données
Exemple d’importation
L’exemple suivant importe les données d’un fichier vers une table nommée customers :
bcp sales.dbo.customers in /home/user/customers.txt \ -S mydb.cluster-abc123.us-east-1.rds.amazonaws.com \ -Uadmin\ -Pmypassword\ -c \ -t "|" \ -r "\n" \ -b 1000
Cette commande :
Importe les données dans la table
customersLit les données de
/home/user/customers.txtUtilise le format de caractères (
-c)Utilise la barre verticale (|) en tant que délimiteur de champ (
-t "|")Utilise une nouvelle ligne en tant que délimiteur de ligne (
-r "\n")Traite les données par lots de 1 000 lignes (
-b 1000)
Options BCP courantes
BCP propose de nombreuses options pour contrôler la mise en forme des données et le comportement de transfert. Le tableau suivant décrit les options les plus fréquemment utilisées :
| Option | Description |
|---|---|
-c |
Utilise le type de données de caractère pour toutes les colonnes |
-n |
Utilise les types de données de bases de données natives |
-t |
Spécifie le délimiteur de champ (la valeur par défaut est une tabulation) |
-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 la mise en forme 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 for SQL Server dans Linux, tenez compte des bonnes pratiques suivantes :
-
Utilisez le traitement groupé : pour les grands jeux de données, utilisez l’option
-bpermettant de traiter les données de manière groupée. Cela améliore les performances et permet une meilleure récupération après une erreur. -
Gérez correctement les erreurs : utilisez l’option
-epour 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 bénéficier 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. Pensez à utiliser des variables d’environnement ou des fichiers de configuration dotés des autorisations appropriées.
-
Faites des tests avec de petits jeux de données : avant de traiter de grandes quantités de données, testez vos commandes BCP avec des jeux de données plus petits afin de vérifier la mise en forme 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
screenoutmuxpour les opérations de longue durée. -
Validez l’intégrité des données : après le transfert des données, vérifiez le nombre de lignes et les données d’échantillon pour vous assurer que l’opération s’est bien déroulée.
Dépannage des problèmes courants
Le tableau suivant décrit les problèmes courants que vous pouvez rencontrer lors de l’utilisation de BCP dans Linux, ainsi que 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 à partir de 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 de 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 des autorisations INSERT pour les importations ou des autorisations SELECT pour les exportations sur les tables cibles. |
| Problèmes de gestion des fichiers volumineux | Utilisez le traitement par lots avec l’option -b. Envisagez de diviser les fichiers volumineux en petits morceaux pour améliorer les performances et récupérer après une erreur. |
| Problèmes de codage de caractères | Assurez-vous que vos fichiers de données utilisent un codage de caractères compatible. Utilisez l’option -c pour le format des caractères ou spécifiez les pages de code appropriées. |