All Products
Search
Document Center

Hologres:Gunakan perintah COPY untuk mengekspor data Hologres ke OSS

Last Updated:Feb 04, 2026

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_program yang dapat menggunakan perintah hg_dump_to_oss untuk mengekspor data Hologres ke OSS. Superuser dapat memberikan izin pg_execute_server_program kepada 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 COPY memindahkan data antara tabel PostgreSQL dan sistem file standar. Hologres mendukung perintah COPY. Pernyataan COPY TO menyalin hasil kueri SELECT ke file atau media output lainnya. Pernyataan COPY FROM menyalin 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);
    Catatan

    Jangan 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);
Catatan

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 255

    Jenis jaringan OSS yang dipilih salah. Jika Anda menggunakan public cloud, pilih classic network.

  • DETAIL: command not found

    Anda perlu mengatur parameter program untuk DUMP TO OSS menjadi hg_dump_to_oss. Jika tidak, error ini akan terjadi.

  • ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 101

    AccessKeyId yang dimasukkan tidak valid. Gunakan ID AccessKey akun Anda.

  • ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 102

    AccessKeySecret yang dimasukkan tidak valid. Gunakan Rahasia AccessKey akun Anda.

  • ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 103

    Endpoint 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 104

    BucketName yang dimasukkan tidak valid. Konfirmasi nama bucket tersebut.

  • ERROR: program "hg_dump_to_oss ..." failed DETAIL: child process exited with exit code 105

    Ada 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 255

    Error 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.