Alibaba Cloud Object Storage Service (OSS) adalah layanan penyimpanan cloud yang aman, hemat biaya, dan andal. Topik ini menjelaskan cara menggunakan perintah copy to dan perintah hg_dump_to_oss untuk mengekspor hasil kueri ke lokasi OSS tertentu.
Batasan
-
Hanya superuser dari instans Hologres saat ini atau pengguna dengan izin
pg_execute_server_programyang dapat menggunakan perintahhg_dump_to_ossuntuk mengekspor data Hologres ke OSS. Superuser dapat memberikan izinpg_execute_server_programkepada pengguna lain dengan menjalankan perintah berikut.-- Jika DB menggunakan simple permission model, jalankan pernyataan berikut CALL spm_grant('pg_execute_server_program','ID akun Alibaba Cloud/email/RAM user'); -- Jika DB menggunakan standard PostgreSQL authorization model, jalankan pernyataan berikut GRANT pg_execute_server_program TO ID akun Alibaba Cloud/email/RAM user; -
Volume data untuk satu kali impor ke OSS tidak boleh melebihi 5 GB.
Ikhtisar perintah
-
Perintah COPY: Perintah
COPYmemindahkan data antara tabel PostgreSQL dan sistem file standar. Hologres mendukung perintahCOPY. PernyataanCOPY TOmenyalin hasil kueri SELECT ke file atau media output lainnya. PernyataanCOPY FROMmenyalin data dari file ke tabel. -
Perintah hg_dump_to_oss: Mengekspor hasil kueri di Hologres ke lokasi OSS tertentu.
Perintah COPY
Bagian berikut menjelaskan sintaks dan parameter perintah COPY TO:
-
Sintaksis
COPY ( query ) TO { PROGRAM 'command' | STDOUT } [ [ WITH ] ( option [, ...] ) ]Opsi dapat berupa salah satu dari berikut:
FORMAT [format_name] DELIMITER 'delimiter_character' NULL 'null_string' HEADER QUOTE 'quote_character' ESCAPE 'escape_character' ENCODING 'encoding_name' -
Parameter
Parameter
Deskripsi
query
Pernyataan kueri yang akan dieksekusi. Tanda kurung di sekitar pernyataan kueri wajib digunakan.
PROGRAM
Perintah yang akan dieksekusi. Output ditulis ke input standar perintah tersebut.
STDOUT
Menentukan bahwa output dikirim ke aplikasi client.
FORMAT
Memilih format data. Format dapat berupa text, csv, atau binary. Nilai default adalah text.
DELIMITER
Menentukan karakter yang memisahkan kolom dalam setiap baris file. Karakter ini harus berupa satu byte tunggal. Daftar berikut menjelaskan karakter default untuk berbagai format data:
-
Untuk format text, default-nya adalah karakter tab (\t).
-
Untuk format csv, default-nya adalah koma (,).
-
Opsi ini tidak didukung untuk format binary.
NULL
Menentukan string yang merepresentasikan nilai null. Daftar berikut menjelaskan string default untuk berbagai format data:
-
Untuk format text, default-nya adalah \N.
-
Untuk format csv, default-nya adalah string kosong tanpa tanda kutip.
Opsi ini tidak didukung untuk format binary.
HEADER
Menentukan bahwa file memiliki baris header berisi nama kolom. Hanya file CSV yang mendukung opsi ini.
QUOTE
Menentukan karakter yang harus muncul sebelum karakter data yang sesuai dengan nilai QUOTE. Karakter ini harus berupa satu byte tunggal. Nilai default-nya sama dengan nilai QUOTE. Hanya format CSV yang mendukung opsi ini.
ENCODING
Menentukan bahwa file dikodekan dalam encoding_name. Jika opsi ini diabaikan, encoding client saat ini akan digunakan.
-
Perintah hg_dump_to_oss
Bagian berikut menjelaskan sintaks dan parameter perintah hg_dump_to_oss. Di Hologres, perintah hg_dump_to_oss digunakan bersama perintah COPY TO.
-
Sintaksis
COPY (query) TO PROGRAM 'hg_dump_to_oss --AccessKeyId <accessid> --AccessKeySecret <accesskey> --Endpoint <ossendpoint> --BucketName <bucketname> --DirName <dirname> --FileName <filename> --BatchSize <xxx> ' (DELIMITER ',', HEADER true, FORMAT CSV);CatatanJangan tambahkan karakter seperti
/atau\sebelum <dirname>. -
Parameter
Parameter
Deskripsi
Contoh
query
Pernyataan kueri yang akan dieksekusi.
select * from dual;AccessKeyId
ID AccessKey akun Anda.
Anda dapat membuka halaman AccessKey Management untuk mendapatkan ID AccessKey.
None
AccessKeySecret
Rahasia AccessKey akun Anda.
None
Endpoint
Titik akhir jaringan klasik OSS.
Anda dapat mengklik nama bucket target di halaman Bucket List untuk melihat detail bucket.
oss-cn-beijing-internal.aliyuncs.com
BucketName
Nama Bucket OSS.
dummy_bucket
DirName
Folder di OSS tempat hasil output disimpan.
testdemo/
FileName
(Opsional) Nama file di OSS.
file_name
BatchSize
Jumlah baris untuk setiap eksekusi
hg_dump_to_oss. Nilai default adalah 1000.5000
DELIMITER
Pemisah antar kolom dalam hasil. Nilai default adalah karakter tab (Tab-separated Values, TSV).
','
Contoh penggunaan
Contoh berikut menunjukkan cara menggunakan perintah hg_dump_to_oss bersama perintah COPY TO di Hologres.
-- Dump data dari tabel internal Hologres ke lokasi OSS tertentu
COPY (SELECT * FROM holo_test LIMIT 2) TO PROGRAM 'hg_dump_to_oss --AccessKeyId <access id> --AccessKeySecret <access key> --Endpoint oss-cn-hangzhou-internal.aliyuncs.com --BucketName hologres-demo --DirName holotest/ --FileName file_name --BatchSize 3000' DELIMITER ',';
-- Dump data dari tabel eksternal Hologres ke lokasi OSS tertentu
COPY (SELECT * FROM foreign_holo_test LIMIT 20) TO PROGRAM 'hg_dump_to_oss --AccessKeyId <access id> --AccessKeySecret <access key> --Endpoint oss-cn-hangzhou-internal.aliyuncs.com --BucketName hologres-demo --DirName holotest/ --FileName file_name --BatchSize 3000' (DELIMITER ',', HEADER true);
-- Lakukan dump cross-region ke lokasi OSS tertentu
COPY (SELECT * FROM holo_test_1 LIMIT 20) TO PROGRAM 'hg_dump_to_oss --AccessKeyId <access id> --AccessKeySecret <access key> --Endpoint oss-cn-beijing-internal.aliyuncs.com --BucketName hologres-demo --DirName holotest/ --FileName file_name --BatchSize 3000' (DELIMITER ',', HEADER true, FORMAT CSV);
Hologres mendukung ekspor data lintas wilayah ke lokasi OSS tertentu. Misalnya, Anda dapat mengekspor data yang diambil dari instans di wilayah China (Hangzhou) ke OSS di wilayah China (Beijing).
FAQ
Daftar berikut menjelaskan error umum beserta solusinya:
-
ERROR: syntax error at or near ")"LINE 1: COPY (select 1,2,3 from ) TO PROGRAM 'hg_dump_to_oss2 --Acce...query yang dimasukkan tidak valid. Periksa pernyataan kueri tersebut.
-
DETAIL: child process exited with exit code 255Jenis jaringan OSS yang dipilih salah. Jika Anda menggunakan public cloud, pilih classic network.
-
DETAIL: command not foundAnda perlu mengatur parameter program untuk
DUMP TO OSSmenjadi hg_dump_to_oss. Jika tidak, error ini akan terjadi. -
ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 101AccessKeyId yang dimasukkan tidak valid. Gunakan ID AccessKey akun Anda.
-
ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 102AccessKeySecret yang dimasukkan tidak valid. Gunakan Rahasia AccessKey akun Anda.
-
ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 103Endpoint yang dimasukkan tidak valid. Konfirmasi titik akhir untuk jaringan klasik OSS yang sesuai.
-
ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 104BucketName yang dimasukkan tidak valid. Konfirmasi nama bucket tersebut.
-
ERROR: program "hg_dump_to_oss ..." failed DETAIL: child process exited with exit code 105Ada parameter yang diperlukan tidak dimasukkan. Periksa deskripsi parameter dan pastikan semua parameter yang diperlukan telah dikonfigurasi.
-
ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 255Error ini biasanya terjadi karena server Hologres tidak dapat terhubung ke jaringan OSS yang ditentukan. Anda dapat mengubah nama domain OSS. Misalnya, pilih classic network untuk jenis jaringan OSS. Untuk informasi lebih lanjut tentang nama domain OSS, lihat Regions and endpoints.