Jak wyeksportować tabelę jako CSV z nagłówkami na Postgresql?
418
Próbuję wyeksportować tabelę PostgreSQL z nagłówkami do pliku CSV za pomocą wiersza polecenia, jednak otrzymuję go do eksportu do pliku CSV, ale bez nagłówków.
Również dzięki temu psqlpodejściu można zapisać dane wyjściowe w dowolnym miejscu, do którego ma dostęp. Właśnie wykorzystałem to psqlpodejście do przeniesienia danych ze zdalnego serwera do pliku lokalnego. Bardzo zręczny.
Nie sądzę, że potrzebujesz średnika kończącego w wersji psql polecenia ( \COPY ...). I przynajmniej w mojej wersji psql (9.5.2) nie musiałem podawać „DELIMITER”; domyślnie był to przecinek.
Najlepsze dla „dowolnego środowiska”. Najlepsze dla 1. Nie potrzebujesz specjalnych uprawnień w Postgresql lub u klienta; 2. potrafi korzystać ze ścieżki względnej; oraz 3. jest bezpieczny dla prawdziwego formatu CSV (bezpieczne oferty).
Nie jest to powszechnie uważane za funkcję eksportu, tylko kontrolowane wyświetlanie danych. Różnica jest niewielka, ale ważna: jest bardziej przeznaczona do odczytania przez człowieka niż COPYoświadczenie, które tworzy plik do ponownego użycia
NIEBEZPIECZEŃSTWO to nie jest dla formatu CSV, nie działa dla tablic lub tekstu z „,” .. nie wykonuj poprawnego cytowania CSV. Użyj odpowiedzi @ Briana.
Użyłem ~ jako separatora, ponieważ nie lubię plików CSV, zwykle używam plików TSV, ale nie pozwala mi dodać „\ t” jako separatora, więc użyłem ~, ponieważ jest to rzadko używany znak.
Publikuję tę odpowiedź, ponieważ żadna z podanych tutaj odpowiedzi tak naprawdę nie działała dla mnie. Nie mogłem użyćCOPY z Postgres, ponieważ nie miałem odpowiednich uprawnień. Wybrałem więc „Eksportuj wiersze siatki” i zapisałem wynik jako UTF-8.
psqlWersja podana przez @Brian również nie działa na mnie, z innego powodu. Powodem, dla którego nie zadziałało, jest to, że najwyraźniej wiersz polecenia systemu Windows (korzystałem z systemu Windows) sam wtrącał się w kodowanie. Wciąż pojawiał się ten błąd:
BŁĄD: znak o sekwencji bajtów 0x81 w kodowaniu „WIN1252” nie ma odpowiednika w kodowaniu „UTF8”
Rozwiązaniem, którego użyłem, było napisanie krótkiego skryptu JDBC (Java), który odczytuje plik CSV i wydaje instrukcje insert bezpośrednio do mojej tabeli Postgres. To działało, ale wiersz polecenia również działałby, gdyby nie zmieniał kodowania.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.