Gunakan perintah \copy di command-line interface (CLI) psql untuk mengimpor file teks lokal langsung ke instans AnalyticDB for PostgreSQL—tanpa memerlukan akses file di sisi server.
\copy menulis data secara serial melalui node coordinator. Perintah ini cocok untuk set data kecil hingga menengah, tetapi tidak sesuai untuk impor paralel skala besar. Untuk pemuatan data volume tinggi, gunakan tabel eksternal berbasis OSS sebagai gantinya. Lihat Gunakan tabel eksternal untuk mengimpor data dari OSS.
Kapan menggunakan \copy vs COPY
Kedua perintah memiliki sintaks yang sama (lihat COPY dalam dokumentasi PostgreSQL), tetapi dijalankan dalam konteks yang berbeda.
\copy dijalankan pada klien psql dan membaca file dari mesin lokal Anda—akses file dan izin diatur oleh pengguna lokal, bukan oleh server database. Artinya, hak istimewa SUPERUSER tidak diperlukan. AnalyticDB for PostgreSQL tidak memberikan izin SUPERUSER, sehingga perintah COPY dengan opsi FILE di sisi server tidak tersedia; gunakan \copy sebagai gantinya.
\copy | COPY | |
|---|---|---|
| Berjalan di | client psql | Server database |
| Membaca file dari | Mesin lokal | sistem file server |
| Memerlukan SUPERUSER | Tidak | Ya (untuk akses FILE) |
| Handles | FILE, STDIN, STDOUT | Hanya STDIN, STDOUT |
Prasyarat
Sebelum memulai, pastikan Anda telah:
menginstal psql dan terhubung ke instans AnalyticDB for PostgreSQL Anda
File teks lokal yang akan diimpor
memiliki izin menulis pada tabel target
Impor file lokal
Jalankan \copy dalam sesi psql Anda untuk memuat file ke dalam tabel:
\COPY table [(column [, ...])] FROM {'file' | STDIN}
[ [WITH]
[OIDS]
[HEADER]
[DELIMITER [ AS ] 'delimiter']
[NULL [ AS ] 'null string']
[ESCAPE [ AS ] 'escape' | 'OFF']
[NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
[CSV [QUOTE [ AS ] 'quote']
[FORCE NOT NULL column [, ...]]
[FILL MISSING FIELDS]
[[LOG ERRORS [INTO error_table] [KEEP]
SEGMENT REJECT LIMIT count [ROWS | PERCENT] ]Contoh: Impor semua baris dari file lokal ke tabel bernama test1.
\COPY test1 FROM '/path/to/localfile';Verifikasi impor
Setelah menjalankan \copy, konfirmasi bahwa data berhasil dimuat:
SELECT COUNT(*) FROM test1;Jika jumlah baris sesuai dengan file sumber Anda, impor telah selesai.
Jika Anda menggunakan LOG ERRORS, kueri tabel error untuk meninjau baris yang ditolak:
SELECT * FROM error_table;Gunakan JDBC alih-alih psql
Untuk mengimpor data secara terprogram, gunakan Java Database Connectivity (JDBC). Driver JDBC PostgreSQL menyediakan antarmuka CopyIn, yang membungkus pernyataan COPY. Lihat Interface CopyIn dalam dokumentasi JDBC PostgreSQL.