Jak wyeksportować tabelę jako CSV z nagłówkami w Postgresql?
Próbuję wyeksportować tabelę PostgreSQL z nagłówkami do pliku CSV za pomocą linii poleceń, jednak dostaję ją do eksportu do pliku CSV, ale bez nagłówków.
Mój kod wygląda następująco:
COPY products_273 to '/tmp/products_199.csv' delimiters',';
13 answers
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-28 14:20:04
Z linii poleceń psql:
\COPY my_table TO 'filename' CSV HEADER
Brak dwukropka na końcu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-24 15:41:47
Zamiast tylko nazwy tabeli, możesz również napisać zapytanie o uzyskanie tylko wybranych danych kolumn.
COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
Z uprawnieniami administratora
\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-02 16:39:15
Kiedy nie mam uprawnień do zapisu pliku z Postgres, stwierdzam, że mogę uruchomić zapytanie z linii poleceń.
psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-01 17:32:00
To działa
psql dbname -F , --no-align -c "SELECT * FROM TABLE"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-13 06:17:52
Dla wersji 9.5 używam, byłoby tak:
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-13 00:26:04
To rozwiązanie działało dla mnie za pomocą \copy
.
psql -h <host> -U <user> -d <dbname> -c "\copy <table_name> FROM '<path to csvfile/file.csv>' with (format csv,header true, delimiter ',');"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-04 15:43:46
Najprostszy sposób (za pomocą psql
) wydaje się być przez użycie --csv
flagi:
psql --csv -c "SELECT * FROM products_273" > '/tmp/products_199.csv'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-24 15:38:47
Heres jak to działa power shell używając pgsl connnect do bazy danych Heroku PG:
Musiałem najpierw zmienić kodowanie klienta na utf8 tak: \encoding UTF8
Następnie wrzucił dane do pliku CSV to:
\copy (SELECT * FROM my_table) TO C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'
Użyłem ~ jako ogranicznika, ponieważ nie lubię plików CSV, zwykle używam plików TSV, ale to nie pozwala mi dodać' \t ' jako ogranicznik, więc użyłem ~ ponieważ jest to rzadko używany characeter.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-26 19:31:29
Copy (anysql query datawanttoexport) to 'fileablsoutepathwihname ' delimiter', ' CSV header;
Za pomocą tego u można również eksportować dane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-10 06:44:46
Zamieszczam tę odpowiedź, ponieważ żadna z innych odpowiedzi podanych tutaj nie zadziałała na mnie. Nie mogłem używać COPY
z poziomu Postgres, ponieważ nie miałem poprawnych uprawnień. Wybrałem więc "Eksportuj wiersze siatki" i zapisałem wyjście jako UTF-8.
Wersja psql
podana przez @ Brian również nie zadziałała dla mnie, z innego powodu. Powodem, dla którego nie zadziałało, jest to, że najwyraźniej wiersz polecenia systemu Windows (używałem systemu Windows) mieszał się z kodowaniem samodzielnie. Ciągle dostaję 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 odczytał plik CSV i wydał instrukcje insert bezpośrednio do mojej tabeli Postgres. To zadziałało, ale wiersz polecenia również zadziałałby, gdyby nie zmieniał kodowania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-27 10:27:09
Spróbuj tego: "COPY products_273 FROM' \tmp\products_199.csv 'DELIMITER', 'nagłówek CSV'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-30 08:18:36
The Kopiuj dowództwo nie jest tym, co jest ograniczone. Ograniczeniem jest kierowanie wyjścia z na do dowolnego miejsca poza STDOUT. Nie ma jednak ograniczeń w określaniu pliku wyjściowego poprzez \o dowództwo.
\o '/tmp/products_199.csv';
COPY products_273 TO STDOUT WITH (FORMAT CSV, HEADER);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-17 18:16:20