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.
\copytarget_tablefrom '/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.
\copytarget_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