Bagaimana saya bisa menyalin dari file lokal ke DB jarak jauh di PostgreSQL? [Tutup]

9

Saya seorang pemula dalam psql dan butuh bantuan. Bagaimana saya bisa memuat CSV lokal ke DB jarak jauh?

Saya menggunakan perintah berikut

\COPY test(user_id, product_id, value) 
      FROM '/Users/testuser/test.tsv' WITH DELIMITER '\t' CSV HEADER;

tetapi ini mencari file pada DB jarak jauh sementara saya perlu melakukannya pada PC lokal saya.

pengguna22149
sumber
4
\copymembaca file lokal (ini adalah psqlperintah dan hanya dapat digunakan dari dalam psql). COPYnamun (perhatikan, `` yang hilang) akan membaca file di server.
a_horse_with_no_name
jadi tidak ada cara untuk ini? saya perlu menyalin file ke server jauh?
user22149
apakah ada perbedaan dalam salin dan \ salin? maaf saya benar-benar baru di psql hanya tahu oracle di sana saya dapat melakukan ini tanpa masalah
user22149
Yah bedanya adalah, yang satu membaca file di server dan yang lainnya membaca file pada klien. Tentunya membaca file di server akan lebih cepat.
a_horse_with_no_name
1
@ user22149 Gunakan tab literal atau E'\t'. Tetapi tab harus menjadi default jika Anda tidak menentukan batasan.
Craig Ringer

Jawaban:

5

Ada dua kemungkinan di sini.

  1. Jika Anda menggunakan psql, maka \ copy adalah cara yang benar untuk melakukan sesuatu seperti yang Anda sebutkan.

  2. Jika Anda menggunakan program klien yang Anda tulis, maka Anda perlu melakukannya

    COPY FROM STDIN.....

Dan kemudian masukkan file (lihat dokumentasi pada perintah COPY .

Perintah COPY adalah binatang yang sedikit aneh. Ini adalah satu perintah yang PostgreSQL saat ini dukung dari Quel dan karena itu keduanya tidak standar, dan didasarkan pada sesuatu dari paradigma yang berbeda dari perintah lainnya. Karena alasan ini, penting untuk membaca dokumen dengan relatif hati-hati pada perintah ini.

Chris Travers
sumber