Saya memiliki akses hanya baca ke database di server jauh. Jadi, saya bisa menjalankan:
COPY products TO '/tmp/products.csv' DELIMITER ',';
Tetapi pada server itu saya tidak memiliki izin untuk membuat / menyimpan file, jadi saya perlu melakukan ini pada mesin lokal saya.
Ketika saya terhubung ke basis data jauh, bagaimana saya bisa menjalankan perintah untuk menyimpan file di mesin lokal saya alih-alih server jauh?
Atau, bagaimana saya bisa menjalankan perintah Linux untuk terhubung ke basis data jauh, menjalankan kueri, dan menyimpan output sebagai file ke mesin lokal saya?
sumber
psql
skrip, mulai denganBEGIN
, kemudian melakukan\copy
perintah Anda , lalu aCOMMIT
. Atau gunakanpsql -f
untuk menjalankan skrip daripada menggunakan dokumen di sini.-A
bukan-P format=unaligned
dan juga saya pikir Anda perlu-P fieldsep=,
Perintah Linux adalah:
sumber
-t -P format=unaligned
ke perintah itu, Anda akan mendapatkan sesuatu yang sedikit lebih dekat, seperti CSV yang dibatasi oleh kereta, tetapi pipa dalam teks tidak akan lolos sehingga tidak valid.-P fieldsep=','
kecuali bahwa ini akan lebih mungkin menyebabkan kesalahan karena kurang melarikan diri.-P fieldsep_zero=on
akan baik-baik saja jika Anda tidak keberatan mem-parsing teks null-byte-delimited, karena null byte tidak dapat terjadi dalampsql
output secara alami.