Jak mogę skopiować z pliku lokalnego do zdalnej bazy danych w PostgreSQL? [Zamknięte]

9

Jestem nowicjuszem w psql i potrzebuję pomocy. Jak mogę załadować lokalny CSV do zdalnego DB?

Używam następującego polecenia

\COPY test(user_id, product_id, value) 
      FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER;

ale to przeszukuje plik na zdalnej bazie danych, podczas gdy muszę to zrobić na moim komputerze lokalnym.

użytkownik22149
źródło
4
\copyczyta plik lokalny (jest to psqlpolecenie i można go używać tylko od wewnątrz psql). COPYjednak (zauważ brakujące ``) odczyta plik na serwerze.
a_horse_w_no_name
więc nie ma na to sposobu? muszę skopiować plik na zdalny serwer?
user22149,
czy jest jakaś różnica w kopiowaniu i \ kopiowaniu? przepraszam, jestem naprawdę nowy w psql znam tylko wyrocznię, mogę to zrobić bez problemu
user22149
Różnica polega na tym, że jeden odczytuje plik na serwerze, a drugi odczytuje plik na kliencie. Oczywiście odczyt pliku na serwerze będzie szybszy.
a_horse_w_no_name
1
@ user22149 Użyj dosłownej zakładki lub E'\t'. Ale tab powinien być domyślny, jeśli i tak nie określisz ograniczenia.
Craig Ringer

Odpowiedzi:

5

Istnieją tutaj dwie możliwości.

  1. Jeśli używasz psql, to \ copy jest poprawnym sposobem na robienie rzeczy jak wspomniałeś.

  2. Jeśli korzystasz z programu klienckiego, którego jesteś autorem, musisz to zrobić

    COPY FROM STDIN.....

Następnie podaj plik (patrz dokumentacja polecenia COPY .

Polecenie KOPIUJ jest nieco dziwną bestią. Jest to jedno polecenie, które obecnie obsługuje PostgreSQL z Quel, więc jest ono zarówno niestandardowe, jak i oparte na czymś innym niż inne polecenia. Z tego powodu ważne jest, aby dokładnie przeczytać dokumentację dotyczącą tego polecenia.

Chris Travers
źródło