Perintah \copy di psql memungkinkan Anda mengekspor data dari instans AnalyticDB for PostgreSQL langsung ke file di komputer lokal tanpa memerlukan hak istimewa SUPERUSER.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans AnalyticDB for PostgreSQL yang sedang berjalan
psql yang telah diinstal dan dikonfigurasi untuk terhubung ke instans Anda (lihat Client connection)
Data Management (DMS) tidak mendukung perintah\copy. Gunakan psql untuk menjalankan\copy.
Cara kerja
\copy adalah meta-perintah psql yang menjalankan perintah SQL COPY dasar, tetapi mengarahkan data melalui klien alih-alih server. Alih-alih server yang membaca atau menulis file yang ditentukan, psql-lah yang membaca atau menulis file tersebut dan mengarahkan data antara server dan sistem file lokal. Artinya, akses file dan izin dikendalikan oleh pengguna lokal, bukan oleh server database—sehingga tidak diperlukan izin SUPERUSER.
`\copy` vs `COPY`:
\copy | COPY | |
|---|---|---|
| Tempat eksekusi | client psql | Server database |
| Akses file | Sistem file lokal (FILE, STDIN, STDOUT) | Hanya STDIN dan STDOUT |
| Memerlukan SUPERUSER | Tidak | Ya (untuk akses FILE) |
AnalyticDB for PostgreSQL tidak mendukung izin SUPERUSER. Gunakan \copy untuk mengekspor data ke file lokal.Sintaksis
\COPY {table [(column [, ...])] | (query)} TO {'file' | STDOUT}
[ [WITH] [OIDS] [HEADER]
[DELIMITER [ AS ] 'delimiter']
[NULL [ AS ] 'null string']
[ESCAPE [ AS ] 'escape' | 'OFF']
[CSV [QUOTE [ AS ] 'quote']
[FORCE QUOTE column [, ...]] ]
[IGNORE EXTERNAL PARTITIONS ] ]di mana opsi WITH adalah:
| Opsi | Deskripsi |
|---|---|
OIDS | Menyertakan OID untuk setiap baris |
HEADER | Menyertakan baris header berisi nama kolom (hanya untuk format CSV) |
DELIMITER 'delimiter' | Karakter pemisah kolom, misalnya , |
NULL 'null string' | String yang merepresentasikan nilai null, misalnya \N |
ESCAPE 'escape' | Karakter escape untuk output CSV |
CSV | Menggunakan format CSV |
QUOTE 'quote' | Karakter quote untuk format CSV |
FORCE QUOTE column | Memaksa quoting pada kolom tertentu dalam output CSV |
IGNORE EXTERNAL PARTITIONS | Melewati partisi eksternal selama ekspor |
Untuk referensi sintaksis lengkap, lihat COPY dalam dokumentasi PostgreSQL.
AnalyticDB for PostgreSQL juga mendukung menjalankan pernyataanCOPYmelalui JDBC. MetodeCopyIndienkapsulasi dalam JDBC. Untuk detailnya, lihat Interface CopyIn.
Mengekspor data ke file lokal
Hubungkan ke instans Anda menggunakan psql, lalu jalankan \copy untuk mengekspor tabel atau hasil kueri ke file lokal.
Mengekspor seluruh tabel:
\COPY test1 TO '/path/to/localfile';Mengekspor dengan format CSV dan delimiter kustom:
\COPY test1 TO '/path/to/localfile.csv' WITH CSV DELIMITER ',';Mengekspor hasil kueri:
\COPY (SELECT id, name FROM test1 WHERE status = 'active') TO '/path/to/output.csv' WITH CSV HEADER;Ganti placeholder berikut dengan nilai aktual Anda:
| Placeholder | Deskripsi | Contoh |
|---|---|---|
test1 | Nama tabel yang akan diekspor | orders |
/path/to/localfile | Path absolut ke file output di mesin lokal Anda | /home/user/export.csv |