Utilisation de la commande COPY avec Aurora PostgreSQL Limitless Database - Amazon Aurora

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 la commande COPY avec Aurora PostgreSQL Limitless Database

Vous pouvez utiliser la fonctionnalité \copy de l’utilitaire psql pour importer et exporter des données dans/depuis Aurora PostgreSQL Limitless Database

Découvrez comment utiliser la commande COPY pour charger des données dans Aurora PostgreSQL Limitless Database

Aurora PostgreSQL Limitless Database est compatible avec la fonctionnalité \copy de l’utilitaire psql d’importation de données.

Dans Limitless Database comme dans Aurora PostgreSQL, les éléments suivants ne sont pas pris en charge :

  • Accès SSH direct aux instances de base de données : vous ne pouvez pas copier un fichier de données (au format .csv, par exemple) sur l’hôte de l’instance de base de données et exécuter COPY à partir du fichier.

  • Utilisation de fichiers locaux sur l’instance de base de données : utilisez COPY ... FROM STDIN et COPY ... TO STDOUT.

La commande COPY de PostgreSQL propose des options permettant d’utiliser des fichiers locaux (FROM/TO) et de transmettre des données via une connexion entre le client et le serveur (STDIN/STDOUT). Pour plus d’informations, consultez COPY dans la documentation de PostgreSQL.

La commande \copy de l’utilitaire psql de PostgreSQL fonctionne avec les fichiers locaux de l’ordinateur sur lequel vous exécutez le client psql. Il invoque la commande correspondante COPY ... FROM STDIN ou COPY ... FROM STDOUT sur le serveur distant (par exemple, Limitless Database) auquel vous vous connectez. Il lit les données à partir du fichier local vers STDIN ou écrit dans ce fichier à partir de STDOUT.

Fractionnement de données en plusieurs fichiers

Les données sont stockées sur plusieurs partitions dans Aurora PostgreSQL Limitless Database. Pour accélérer le chargement des données en utilisant \copy, vous pouvez les diviser en plusieurs fichiers. Importez-les ensuite indépendamment pour chaque fichier de données en exécutant des commandes \copy distinctes en parallèle.

Imaginons que vous ayez un fichier de données d’entrée au format CSV contenant 3 millions de lignes à importer. Vous pouvez diviser le fichier en segments contenant chacun 200 000 lignes (soit 15 segments) :

split -l200000 data.csv data_ --additional-suffix=.csv -d

Le résultat est une série de fichiers, de data_00.csv à data_14.csv. Vous pouvez ensuite importer des données à l’aide de 15 commandes \copy parallèles, par exemple :

psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table from '/tmp/data_00.csv';" postgres_limitless & psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_01.csv';" postgres_limitless & ... psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_13.csv';" postgres_limitless & psql -h dbcluster.limitless-111122223333.aws-region.rds.amazonaws.com -U username -c "\copy test_table FROM '/tmp/data_14.csv';" postgres_limitless

Cette méthode permet d’importer le même volume de données environ 10 fois plus vite qu’en utilisant une seule commande \copy.

Utilisation de la commande COPY pour copier des données Limitless Database dans un fichier

Vous pouvez utiliser la commande \copy pour copier des données d’une table sans limite vers un fichier, comme illustré dans l’exemple suivant :

postgres_limitless=> \copy test_table TO '/tmp/test_table.csv' DELIMITER ',' CSV HEADER;