PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Import PostgreSQL CSV z wiersza poleceń

Rozwiązanie w zaakceptowanej odpowiedzi będzie działać tylko na serwerze i gdy użytkownik wykonujący zapytanie będzie miał uprawnienia do odczytu pliku, jak wyjaśniono w tej odpowiedzi SO.

W przeciwnym razie bardziej elastycznym podejściem jest zastąpienie COPY SQL polecenie z psql „meta-polecenie” o nazwie \copy która przyjmuje wszystkie te same opcje, co "prawdziwa" KOPIA, ale jest uruchamiana wewnątrz klienta (bez potrzeby ; na końcu):

psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv"

Zgodnie z dokumentacją \copy polecenie:

Wykonuje kopię frontendową (klienta). Jest to operacja, która uruchamia polecenie SQL COPY, ale zamiast odczytywania lub zapisywania przez serwer określonego pliku, psql odczytuje lub zapisuje plik i kieruje dane między serwerem a lokalnym systemem plików. Oznacza to, że dostęp do plików i uprawnienia są dostępne dla użytkownika lokalnego, a nie serwera, i nie są wymagane żadne uprawnienia superużytkownika SQL.

Ponadto, jeśli the_file.csv zawiera nagłówek w pierwszym wierszu, można go rozpoznać dodając header na końcu powyższego polecenia:

psql -c "\copy tbname FROM '/tmp/the_file.csv' delimiter '|' csv header"


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykonać duże, nieblokujące aktualizacje w PostgreSQL?

  2. Jak UNION działa w PostgreSQL

  3. Znajdź wartości, które nie zawierają liczb w PostgreSQL

  4. Jak mogę wysłać e-mail z wyzwalacza PostgreSQL?

  5. Czy mogę użyć zwracanej wartości INSERT...RETURNING w innej INSERT?