Utilizzo del comando COPY con Aurora PostgreSQL Limitless Database - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Utilizzo del comando COPY con Aurora PostgreSQL Limitless Database

Puoi utilizzare la funzionalità\copy nell’utilità psql per importare ed esportare dati in Aurora PostgreSQL Limitless Database.

Utilizzo del comando COPY per caricare dati in Aurora PostgreSQL Limitless Database

Aurora PostgreSQL Limitless Database è compatibile con la funzionalità \copy nell’utilità psql per l’importazione dei dati.

In Limitless Database come in Aurora PostgreSQL, quanto segue non è supportato:

  • Accesso SSH diretto alle istanze database: non puoi copiare un file di dati (ad esempio in formato .csv) sull’host dell’istanza database ed eseguire COPY dal file.

  • Utilizzo di file locali sull’istanza database: utilizza COPY ... FROM STDIN e COPY ... TO STDOUT.

Il comando COPY in PostgreSQL offre opzioni per lavorare con file locali (FROM/TO) e trasmettere dati utilizzando una connessione tra il client e il server (STDIN/STDOUT). Per ulteriori informazioni, consulta COPY nella documentazione di PostgreSQL.

Il comando \copy nell’utilità psql PostgreSQL funziona con i file locali sul computer in cui viene eseguito il client psql. Invoca il rispettivo comando COPY ... FROM STDIN o COPY ... FROM STDOUT sul server remoto (ad esempio, Limitless Database) a cui effettui la connessione. Legge i dati dal file locale verso STDIN o li scrive da STDOUT.

Divisione dei dati in più file

I dati vengono archiviati su più shard in Aurora PostgreSQL Limitless Database. Per velocizzare il caricamento dei dati utilizzando \copy, puoi suddividere i dati in più file. Quindi importa in modo indipendente ogni file indipendentemente eseguendo comandi \copy separati in parallelo.

Ad esempio, hai un file di dati di input in formato CSV con 3 milioni di righe da importare. Puoi dividere il file in blocchi contenenti ciascuno 200.000 righe (15 blocchi):

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

Questo genera i file da data_00.csv fino a data_14.csv. Quindi, puoi importare i dati utilizzando 15 comandi \copy paralleli, ad esempio:

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

Utilizzando questa tecnica, la stessa quantità di dati viene importata circa 10 volte più velocemente rispetto all’utilizzo di un singolo comando \copy.

Utilizzo del comando COPY per copiare dati di Limitless Database in un file

Puoi utilizzare il comando\copy per copiare dati da una tabella di Limitless in un file, come mostrato nell’esempio seguente:

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