I'm mencoba untuk mengekspor tabel PostgreSQL dengan judul ke CSV file melalui command line, namun saya mendapatkan itu untuk ekspor ke file CSV, tapi tanpa judul.
Kode saya terlihat sebagai berikut:
COPY products_273 to '/tmp/products_199.csv' delimiters',';
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
seperti yang dijelaskan dalam manual.
Dari psql baris perintah:
\COPY my_table TO 'filename' CSV HEADER
tidak ada titik koma di akhir.
bukan hanya nama table, anda juga dapat menulis query untuk mendapatkan hanya dipilih kolom data.
COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
dengan hak istimewa admin
\COPY (select id,name from tablename) TO 'filepath/aa.csv' DELIMITER ',' CSV HEADER;
Ketika saya don't memiliki izin untuk menulis file keluar dari Postgres saya menemukan bahwa saya dapat menjalankan query dari baris perintah.
psql -U user -d db_name -c "Copy (Select * From foo_table LIMIT 10) To STDOUT With CSV HEADER DELIMITER ',';" > foo_data.csv
Untuk versi 9.5 saya gunakan, itu akan menjadi seperti ini:
COPY products_273 TO '/tmp/products_199.csv' WITH (FORMAT CSV, HEADER);
Heres bagaimana saya mendapatkannya daya kerja shell menggunakan pgsl menyambung ke Heroku PG database:
Aku harus terlebih dahulu mengubah klien encoding utf8 seperti ini: \encoding UTF8
Kemudian dibuang data ke file CSV ini:
\copy (SELECT * FROM my_table) TO C://wamp64/www/spider/chebi2/dump.csv CSV DELIMITER '~'
Aku digunakan ~ sebagai pembatas karena aku don't seperti file CSV, saya biasanya menggunakan TSV file, tapi itu tidak't membiarkan saya tambahkan '\t' sebagai pembatas, jadi saya digunakan ~ karena jarang digunakan characeter.
Saya posting ini menjawab karena tidak ada jawaban lain yang diberikan di sini benar-benar bekerja untuk saya. Saya tidak bisa menggunakan COPY
dari dalam Postgres, karena aku tidak memiliki izin yang benar. Jadi saya memilih "Ekspor grid baris" dan disimpan output sebagai UTF-8.
The psql
versi yang diberikan oleh @Brian juga tidak bekerja untuk saya, untuk alasan yang berbeda. Alasan itu tidak bekerja adalah bahwa ternyata Windows command prompt (saya menggunakan Windows) adalah campur tangan dengan pengkodean sendiri. Aku terus mendapatkan pesan kesalahan ini:
KESALAHAN: karakter dengan urutan byte 0x81 dalam pengkodean "WIN1252" tidak memiliki setara dalam pengkodean "UTF8"
Solusi akhirnya saya menggunakan itu untuk menulis pendek JDBC script (Java) yang membaca file CSV dan mengeluarkan pernyataan sisipkan langsung ke saya Postgres meja. Ini bekerja, tapi command prompt juga akan bekerja itu tidak pernah mengubah encoding.