Podsumowanie: W tym poradniku poznasz różne techniki eksportu danych z tabel PostgreSQL do plików CSV.
W poprzednim poradniku pokazaliśmy jak zaimportować dane z pliku CSV do tabeli. My wykorzystamy tabelę persons
, którą stworzyliśmy do importu danych z pliku CSV.
Sprawdźmy dane tabeli persons
.
Code language: SQL (Structured Query Language) (sql)SELECT*FROMpersons;
W tabeli mamy dwa rekordy.
Eksport danych z tabeli do CSV za pomocą instrukcji COPY
Najprostszym sposobem na wyeksportowanie danych z tabeli do pliku CSV jest użycie instrukcji COPY
. Na przykład, jeśli chcesz wyeksportować dane tabeli persons
do pliku CSV o nazwie persons_db.csv
w folderze C:\tmp
, możesz użyć następującej instrukcji:
Code language: SQL (Structured Query Language) (sql)COPY persons TO 'C:\tmp\persons_db.csv' DELIMITER ',' CSV HEADER;
PostgreSQL eksportuje wszystkie dane ze wszystkich kolumn tabeli persons
do pliku persons_db.csv
.
W niektórych przypadkach chcemy wyeksportować dane tylko z niektórych kolumn tabeli do pliku CSV. Aby to zrobić, należy podać nazwy kolumn wraz z nazwą tabeli po słowie kluczowym COPY
. Na przykład, poniższe polecenie eksportuje dane z tabel first_name
last_name
, i email
kolumny tabeli persons
do person_partial_db.csv
Code language: SQL (Structured Query Language) (sql)COPY persons(first_name,last_name,email) TO 'C:\tmp\persons_partial_db.csv' DELIMITER ',' CSV HEADER;
Jeśli nie chcesz eksportować nagłówka, który zawiera nazwy kolumn tabeli, wystarczy usunąć flagę HEADER
w instrukcji COPY
. Poniższa instrukcja eksportuje tylko dane z kolumny email
tabeli persons
do pliku CSV.
Code language: SQL (Structured Query Language) (sql)COPY persons(email) TO 'C:\tmp\persons_email_db.csv' DELIMITER ',' CSV;
Zauważ, że nazwa pliku CSV, którą podajesz w poleceniu COPY
musi być zapisana bezpośrednio przez serwer. Oznacza to, że plik CSV musi znajdować się na maszynie serwera bazy danych, a nie na maszynie lokalnej użytkownika. Plik CSV musi być również zapisywalny przez użytkownika, jako który działa serwer PostgreSQL.
Eksport danych z tabeli do pliku CSV za pomocą polecenia kopiuj
W przypadku, gdy masz dostęp do zdalnego serwera bazy danych PostgreSQL, ale nie masz wystarczających uprawnień do zapisu do pliku na nim, możesz skorzystać z wbudowanego w PostgreSQL polecenia \copy
.
Komenda \copy
w zasadzie uruchamia powyższą instrukcję COPY
. Jednak zamiast zapisywania pliku CSV przez serwer, psql zapisuje plik CSV, przenosząc dane z serwera do lokalnego systemu plików. Aby użyć \copy
polecenia, wystarczy mieć wystarczające uprawnienia do lokalnego komputera. Nie wymaga to uprawnień superużytkownika PostgreSQL.
Na przykład, jeśli chcesz wyeksportować wszystkie dane z tabeli persons
do pliku persons_client.csv
, możesz wykonać polecenie \copy
z poziomu klienta psql w następujący sposób:
Code language: SQL (Structured Query Language) (sql)\copy (SELECT * FROM persons) to 'C:\tmp\persons_client.csv' with csv
W tym poradniku pokazaliśmy, jak używać COPY
statement i \copy
polecenia do eksportu danych z tabeli do plików CSV.
- Czy ten poradnik był pomocny?
- TakNie