Utilisation de l’utilitaire BCP dans Linux pour importer et exporter des données - Amazon Relational Database Service

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 :

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 :

bcp database.schema.table out output_file -S server_name -U username -P password [options]

Où :

  • database.schema.table - Le nom de table entièrement qualifié

  • output_file - Le chemin et le nom du fichier de sortie

  • server_name - Votre point de terminaison RDS for SQL Server

  • username - Votre nom d’utilisateur de base de données

  • password - 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 \ -U admin \ -P mypassword \ -c \ -t "|" \ -r "\n"

Cette commande :

  • Exporte les données à partir de la table customers

  • Enregistrer la sortie dans /home/user/customers.txt

  • Utilise 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 :

bcp database.schema.table in input_file -S server_name -U username -P password [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ée

  • server_name - Votre point de terminaison RDS for SQL Server

  • username - Votre nom d’utilisateur de base de données

  • password - 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 \ -U admin \ -P mypassword \ -c \ -t "|" \ -r "\n" \ -b 1000

Cette commande :

  • Importe les données dans la table customers

  • Lit les données de /home/user/customers.txt

  • Utilise 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 -b permettant 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 -e 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 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 screen ou tmux pour 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.