Introduzione
PostgreSQL (o Postgres ) è un sistema di gestione di database relazionale a oggetti simile a MySQL ma supporta funzionalità e stabilità avanzate. Una caratteristica eccellente è che puoi esportare una tabella Postgres in un .CSV file. Ciò può essere particolarmente utile quando si trasferisce una tabella su un sistema diverso o la si importa in un'altra applicazione di database.
In questo tutorial imparerai come esportare una tabella Postgres in un file .CSV usando \copy
e COPY
comandi.
Prerequisiti
- PostgreSQL installato sul sistema
- Un database esistente in PostgreSQL
- Una finestra di terminale/riga di comando (Ctrl+Alt+T)
Prima di iniziare con PostgreSQL
Postgres può essere installato su Windows, Mac, Linux e può anche essere distribuito all'interno di un container Docker. Questa guida ti guida attraverso la procedura usando Ubuntu Linux. Tuttavia, tutti i comandi di esportazione può essere utilizzato in qualsiasi altro sistema operativo supportato.
Se non hai Postgres, puoi installarlo scaricando il software dal sito Web dello sviluppatore. Installa Postgres su Ubuntu dai repository predefiniti inserendo quanto segue:
sudo apt-get install postgresql
Una volta avviato il servizio, devi creare o importare un database.
Esporta i dati dalla tabella in .CSV con il comando COPY
In psql ci sono due diversi comandi.
L'utilizzo di base di COPY
il comando è il seguente:
COPY db_name TO [/path/to/destination/db_name.csv] DELIMITER ‘,’ CSV HEADER;
Sostituisci db_name
con il nome effettivo del tuo database e il /path/to/destination
con la posizione effettiva in cui desideri archiviare il file .CSV.
Ad esempio, in Windows, potresti voler salvarne una copia in C:\tmp\db_name.csv . In Linux, il percorso predefinito potrebbe essere /tmp/db_name.csv . Quindi, puoi aprire il file .CSV e vedere il contenuto della tabella elencato in un formato leggermente diverso. Puoi vedere la differenza nell'esempio qui sotto.
Innanzitutto, elenchiamo il contenuto di una tabella specificata nella shell psql con il comando:
SELECT * FROM [table_name]
L'output mostra i valori all'interno della nostra tabella di esempio come nell'immagine seguente:
Ora puoi confrontarlo con il file .CSV corrispondente. I dati esportati dalla tabella precedentemente citata appaiono in un file .CSV, come si vede nell'immagine seguente:
Esporta colonne specifiche dalla tabella in .CSV
Puoi utilizzare il COPY
comando per scegliere come target colonne specifiche:
COPY [db_name](column1,column2,column3) TO [/path/to/destination/db_name_partial.csv] DELIMITER ‘,’ CSV HEADER;
Esporta i dati dalla tabella in .CSV con il comando \copy
Usa il \copy
comando quando si lavora in remoto. Consente di esportare i dati da un server in un file .CSV su una macchina client locale. Usalo come segue:
\copy (SELECT * FROM [db_name]) to [/path/to/destination] CSV HEADER
Sostituisci db_name
con il nome del database di origine. Sostituisci /path/to/destination
con la posizione effettiva del file .CSV. In Windows, potresti esportare in C:tmpdb_name.csv . In Linux, potresti esportare in /tmp/db_name.csv .
Il \copy
comando richiede solo privilegi elevati per il sistema client. Ciò è utile se non disponi di privilegi sufficienti per eseguire COPY
comando sul server. Inoltre, il \copy
comando consente di utilizzare un percorso relativo.
Ad esempio, puoi specificare desktop/db_name.csv su un sistema Windows e salverebbe sul desktop dell'utente corrente.