Saya mencoba untuk mengekspor tabel PostgreSQL dengan judul ke file CSV melalui baris perintah, namun saya mendapatkannya untuk mengekspor ke file CSV, tetapi tanpa judul.
Kode saya terlihat sebagai berikut:
COPY products_273 to '/tmp/products_199.csv' delimiters',';
postgresql
csv
export-to-csv
heading
postgresql-copy
Elitmiar
sumber
sumber
Jawaban:
seperti yang dijelaskan dalam manual .
sumber
COPY
membutuhkan hak administrator. Gunakan\COPY
sebagai gantinya jika Anda mengalami masalah.COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
Dari baris perintah psql:
tidak ada titik koma di akhir.
sumber
COPY
perintah ini memerlukan akses adminpsql
pendekatan ini, seseorang dapat menyimpan output di mana pun seseorang memiliki akses. Saya hanya menggunakanpsql
pendekatan untuk mendapatkan data dari server jauh ke file lokal. Sangat licin.pg_dump -h remote | pg_restore -h localhost
.psql -c "\COPY (SELECT * FROM mytable) TO STDOUT" > mytable.csv
alih-alih hanya nama tabel, Anda juga dapat menulis kueri untuk mendapatkan hanya data kolom yang dipilih.
dengan hak istimewa admin
sumber
\COPY ...
). Dan setidaknya dalam versi psql saya (9.5.2) saya tidak perlu menentukan 'DELIMITER'; standarnya adalah koma.Ketika saya tidak memiliki izin untuk menulis file dari Postgres saya menemukan bahwa saya dapat menjalankan query dari baris perintah.
sumber
Ini bekerja
sumber
-F ,
, dan gunakan|
sebagai pemisah. Terima kasih!COPY
pernyataan yang membuat file untuk digunakan kembaliUntuk versi 9.5 yang saya gunakan, akan seperti ini:
sumber
Solusi ini berfungsi untuk saya gunakan
\copy
.sumber
Cara paling sederhana (menggunakan
psql
) tampaknya dengan menggunakan--csv
flag:sumber
Inilah cara saya membuatnya bekerja dengan menggunakan pgsl menghubungkan ke database Heroku PG:
Saya harus terlebih dahulu mengubah pengkodean klien ke utf8 seperti ini:
\encoding UTF8
Kemudian membuang data ke file CSV ini:
Saya menggunakan ~ sebagai pembatas karena saya tidak suka file CSV, saya biasanya menggunakan file TSV, tapi itu tidak akan membiarkan saya menambahkan '\ t' sebagai pembatas, jadi saya menggunakan ~ karena ini adalah karakter yang jarang digunakan.
sumber
salin (anysql query datawanttoexport) ke 'fileablsoutepathwihname' delimiter ',' header csv;
Dengan ini Anda dapat mengekspor data juga.
sumber
Saya memposting jawaban ini karena tidak ada jawaban lain yang diberikan di sini yang berfungsi untuk saya. Saya tidak bisa menggunakan
COPY
dari dalam Postgres, karena saya tidak memiliki izin yang benar. Jadi saya memilih "Ekspor baris jaringan" dan menyimpan hasilnya sebagai UTF-8.The
psql
versi yang diberikan oleh @ Brian juga tidak bekerja untuk saya, untuk alasan yang berbeda. Alasan tidak bekerja adalah karena ternyata command prompt Windows (saya menggunakan Windows) ikut campur dengan pengkodean sendiri. Saya terus mendapatkan kesalahan ini:Solusi yang akhirnya saya gunakan adalah menulis skrip JDBC pendek (Java) yang membaca file CSV dan mengeluarkan pernyataan insert langsung ke tabel Postgres saya. Ini berhasil, tetapi command prompt juga akan berhasil seandainya tidak mengubah pengkodean.
sumber
Coba ini: "COPY products_273 DARI '\ tmp \ products_199.csv' DELIMITER ',' CSV HEADER"
sumber