Utilizzo del comando \copy per importare i dati in una tabella su un'istanza database PostgreSQL - Amazon Relational Database Service

Utilizzo del comando \copy per importare i dati in una tabella su un'istanza database PostgreSQL

Il comando \copy di PostgreSQL è un meta-comando disponibile dallo strumento client interattivo psql. Puoi utilizzare \copy per importare i dati in una tabella sull'istanza database RDS for PostgreSQL. Per utilizzare il comando \copy, è necessario innanzitutto creare la struttura della tabella sull'istanza database di destinazione in modo che \copy abbia una destinazione per i dati copiati.

Puoi utilizzare \copy per caricare i dati da un file di valori separati da virgole (CSV), ad esempio uno che è stato esportato e salvato nella workstation client.

Per importare i dati CSV nell'istanza database RDS for PostgreSQL di destinazione, connettiti prima all'istanza database di destinazione utilizzando psql.

psql --host=db-instance.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=target-db

Quindi esegui il comando \copy con i seguenti parametri per identificare la destinazione per i dati e il relativo formato.

  • target_table - Il nome della tabella che dovrebbe ricevere i dati copiati dal file CSV.

  • column_list - Specifiche delle colonne per la tabella.

  • 'filename' - Il percorso completo del file CSV sulla workstation locale.

\copy target_table from '/path/to/local/filename.csv' WITH DELIMITER ',' CSV;

Se il file CSV contiene informazioni sull'intestazione di colonna, puoi utilizzare questa versione del comando e dei parametri.

\copy target_table (column-1, column-2, column-3, ...) from '/path/to/local/filename.csv' WITH DELIMITER ',' CSV HEADER;

Se il comando \copy ha esito negativo, PostgreSQL emette messaggi di errore.

Crea una nuova istanza database utilizzando il comando psql dell’ambiente di anteprima del database con il meta-comando \copy come mostrato negli esempi seguenti. Questo esempio utilizza source-table come nome della tabella di origine, source-table.csv come file .csv e target-db come database di destinazione:

Per Linux, macOS o Unix:

$psql target-db \ -U <admin user> \ -p <port> \ -h <DB instance name> \ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"

Per Windows:

$psql target-db ^ -U <admin user> ^ -p <port> ^ -h <DB instance name> ^ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"

Per informazioni dettagliate sul comando \copy, consulta la pagina psql nella documentazione di PostgreSQL, nella sezione Meta-comandi.