All Products
Search
Document Center

ApsaraDB for ClickHouse:Akses data OSS dengan tabel eksternal

Last Updated:Jul 18, 2026

Anda dapat menggunakan ApsaraDB for ClickHouse untuk mengkueri data di Alibaba Cloud Object Storage Service (OSS) dan mengekspor data ClickHouse ke OSS.

Prasyarat

  • Persyaratan OSS:

  • Persyaratan kluster:

    Anda harus memiliki akun database. Untuk detailnya, lihat Manajemen Akun.

Prasyarat

  1. Buat bucket OSS. Untuk informasi selengkapnya, lihat Buat bucket di konsol.

    Penting

    Bucket OSS harus berada di wilayah yang sama dengan kluster ApsaraDB for ClickHouse Anda.

    Contoh ini menggunakan bucket bernama ck-test-oss.

  2. Unggah objek ke OSS.

    Contoh ini menggunakan objek test.csv. Unggah objek ini ke OSS. Untuk informasi selengkapnya, lihat Unggah objek.

    Jika Anda menggunakan objek sendiri, pastikan formatnya didukung oleh ApsaraDB for ClickHouse. ApsaraDB for ClickHouse mendukung semua format kecuali Protobuf dan CapnProto. Untuk informasi selengkapnya, lihat Format file yang didukung oleh ClickHouse.

Kueri data OSS

Metode 1: Tabel eksternal OSS

Enterprise atau Community-kompatibel (22.8 atau yang lebih baru)

  1. Masuk ke database.

    1. Masuk ke konsol ApsaraDB for ClickHouse.

    2. Di halaman Clusters, klik tab Clusters of Community-compatible Edition atau Enterprise Edition Clusters, lalu klik ID kluster target.

    3. Di halaman Cluster Information, klik Log On to Database di pojok kanan atas.

    4. Pada kotak dialog Connect to Instance, masukkan akun database dan kata sandi, lalu klik Log On.

  2. Buat tabel eksternal OSS.

    Tabel eksternal OSS di ApsaraDB for ClickHouse memungkinkan Anda mengkueri objek yang disimpan di OSS secara langsung tanpa mengimpor data ke penyimpanan lokal, sehingga memungkinkan pemisahan penyimpanan dan komputasi.

    Sintaksnya sebagai berikut:

    CREATE TABLE <table_name> [ON cluster default]
    (
    'col_name1' col_type1,
    'col_name2' col_type2,
    ...
    )
    ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    Contoh

    table_name

    Nama tabel.

    oss_test_tb

    col_name1,col_name2

    Nama kolom.

    user_name

    col_type1,col_type2

    Tipe data kolom.

    Penting

    Skema tabel eksternal OSS harus konsisten dengan data di OSS.

    String

    bucket-name

    Nama bucket OSS.

    ck-test-oss

    oss-endpoint

    Titik akhir internal untuk mengakses bucket OSS dari instans ECS melalui VPC. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.

    Penting

    Pastikan bucket OSS dan kluster ApsaraDB for ClickHouse Anda berada di wilayah yang sama.

    oss-cn-hangzhou-internal.aliyuncs.com

    file-name

    Nama objek di bucket OSS.

    test.csv

    access-key-id

    ID AccessKey pengguna RAM untuk mengakses data OSS.

    yourAccessKeyID

    access-key-secret

    Rahasia AccessKey pengguna RAM untuk mengakses data OSS.

    Anda dapat menggunakan AccessKey yang sudah ada atau membuat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.

    Penting

    Untuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan saat Anda membuatnya dan tidak dapat diambil kembali nanti. Pastikan Anda menyimpan rahasia AccessKey dengan aman.

    yourAccessKeySecret

    file-format-name

    Format objek.

    Penting

    Nilainya harus berupa format file case-sensitive yang didukung oleh ClickHouse. Untuk informasi selengkapnya, lihat format file yang didukung oleh ClickHouse.

    CSV

    Contoh:

    CREATE TABLE oss_test_tb ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')
  3. Kueri data OSS.

    SELECT * FROM oss_test_tb;

    Hasil berikut dikembalikan:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Kompatibel Komunitas (21.8 atau lebih lama)

  1. Masuk ke database.

    1. Masuk ke konsol ApsaraDB for ClickHouse.

    2. Di halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster target.

    3. Di halaman Cluster Information, klik Log On to Database di pojok kanan atas.

    4. Di kotak dialog Connect to Instance, masukkan akun dan kata sandi database, lalu klik Log On.

  2. Buat tabel eksternal OSS.

    Sintaksnya sebagai berikut:

    CREATE TABLE <table_name> [ON cluster default]
    (
    'col_name1' col_type1,
    'col_name2' col_type2,
    ...
    )
    ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');

    Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    Contoh

    table_name

    Nama tabel.

    oss_test_tb

    col_name1,col_name2

    Nama kolom.

    user_name

    col_type1,col_type2

    Tipe data kolom.

    Penting

    Skema tabel eksternal OSS harus konsisten dengan data di OSS.

    String

    oss-endpoint

    Titik akhir internal untuk mengakses bucket OSS dari instans ECS melalui VPC. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.

    Penting

    Pastikan bucket OSS dan kluster ApsaraDB for ClickHouse Anda berada di wilayah yang sama.

    oss-cn-hangzhou-internal.aliyuncs.com

    access-key-id

    ID AccessKey pengguna RAM untuk mengakses data OSS.

    yourAccessKeyID

    access-key-secret

    Rahasia AccessKey pengguna RAM untuk mengakses data OSS.

    Anda dapat menggunakan AccessKey yang sudah ada atau membuat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.

    Penting

    Untuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan saat Anda membuatnya dan tidak dapat diambil kembali nanti. Pastikan Anda menyimpan rahasia AccessKey dengan aman.

    yourAccessKeySecret

    oss-file-path

    Jalur penyimpanan objek, biasanya dalam format oss://<bucket-name>/<path-to-file>.

    Catatan

    Parameter oss-file-path mendukung pencocokan kabur dengan wildcard. Untuk informasi selengkapnya, lihat Gunakan wildcard untuk pencocokan kabur jalur penyimpanan di OSS.

    oss://ck-test-oss/test.csv

    file-format-name

    Format objek.

    Penting

    Nilainya harus berupa format file case-sensitive yang didukung oleh ClickHouse. Untuk informasi selengkapnya, lihat format file yang didukung oleh ClickHouse.

    CSV

    Contoh:

    CREATE TABLE oss_test_tb ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');
  3. Kueri data OSS.

    SELECT * FROM oss_test_tb;

    Hasil berikut dikembalikan:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Metode 2: Fungsi tabel

Enterprise atau Community-compatible (22.8 atau yang lebih baru)

  1. Masuk ke database.

    1. Masuk ke konsol ApsaraDB for ClickHouse.

    2. Di halaman Clusters, klik tab Clusters of Community-compatible Edition atau Enterprise Edition Clusters, lalu klik ID kluster target.

    3. Di halaman Cluster Information, klik Log On to Database di pojok kanan atas.

    4. Di kotak dialog Connect to Instance, masukkan akun dan kata sandi database, lalu klik Log On.

  2. Gunakan fungsi tabel untuk mengkueri data.

    Sintaksnya sebagai berikut:

    SELECT * FROM oss('https://<bucket-name>.<oss-endpoint>/<file-name>','<access-key-id>', '<access-key-secret>', '<file-format-name>', '<col_name> <col_type>(,...)');

    Parameter-parameter tersebut sama dengan yang digunakan untuk membuat tabel eksternal OSS. Untuk detailnya, lihat Deskripsi parameter.

    Contoh:

    SELECT * FROM oss('http://testBucketName.oss-cn-shanghai-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String')

    Hasil berikut dikembalikan:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Kompatibel Komunitas (21.8 atau lebih lama)

  1. Masuk ke database.

    1. Masuk ke konsol ApsaraDB for ClickHouse.

    2. Di halaman Clusters, klik tab Clusters of Community-compatible Edition, lalu klik ID kluster target.

    3. Di halaman Cluster Information, klik Log On to Database di pojok kanan atas.

    4. Di kotak dialog Connect to Instance, masukkan akun dan kata sandi database, lalu klik Log On.

  2. Gunakan fungsi tabel untuk mengkueri data.

    Sintaksnya sebagai berikut:

    SELECT * FROM oss('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>', '<col_name> <col_type>(,...)');

    Parameter-parameter tersebut sama dengan yang digunakan untuk membuat tabel eksternal OSS. Untuk detailnya, lihat Deskripsi parameter.

    Contoh:

    SELECT * FROM oss('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV', 'id UInt8, user_name String, age UInt16, city String, access_url String');

    Hasil berikut dikembalikan:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1           | tick                | 32            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+
    Returned rows: [1], Time elapsed: [183ms]

Ekspor data ClickHouse atau tulis data ke OSS

Catatan penggunaan

Edisi Perusahaan atau Edisi Kompatibel Komunitas 22.8 atau lebih baru

Saat mengekspor atau menulis data ke OSS, Anda harus mengatur s3_truncate_on_insert=1 atau s3_create_new_file_on_insert=1. Jika tidak ada parameter yang diatur atau keduanya diatur ke 0, operasi akan gagal jika file sudah ada di jalur tujuan.

  • s3_truncate_on_insert=1: ApsaraDB for ClickHouse memeriksa apakah file sudah ada di jalur tujuan.

    • Jika file sudah ada, ClickHouse menimpa file yang ada dengan data baru.

    • Metode ini cocok untuk ekspor atau penulisan overwrite penuh. Namun, harap berhati-hati karena operasi ini menghapus data asli.

  • s3_create_new_file_on_insert=1: ClickHouse memeriksa apakah file sudah ada di jalur tujuan.

    • Jika file sudah ada, ClickHouse membuat file baru di direktori tersebut dan menulis data ke dalamnya. File baru diberi nama dengan pola berikut: nama file target + nomor urut (dimulai dari 0 dan bertambah 1) + nama format file.

      Sebagai contoh, jika file target adalah test.csv, operasi pertama membuat test0.csv dan operasi kedua membuat test1.csv.

    • Metode ini cocok untuk ekspor atau penulisan inkremental dan menghindari penimpaan data yang sudah ada.

Edisi Kompatibel Komunitas 21.8 atau lebih lama

Saat mengekspor atau menulis data, hanya satu file OSS yang digunakan. Data baru menimpa isi file asli. Harap berhati-hati.

Langkah 1: Masuk ke database

  1. Masuk ke konsol ApsaraDB for ClickHouse.

  2. Di halaman Clusters, klik tab Clusters of Community-compatible Edition atau Enterprise Edition Clusters, lalu klik ID kluster target.

  3. Di pojok kanan atas halaman Cluster Information, klik Log On to Database.

  4. Di kotak dialog Connect to Instance, masukkan akun dan kata sandi database, lalu klik Log On.

Langkah 2: (Opsional) Siapkan data untuk diekspor

Jika Anda perlu menyiapkan data sampel untuk diekspor dari ApsaraDB for ClickHouse ke OSS, ikuti langkah-langkah berikut.

Jika Anda sudah memiliki data untuk diekspor, lewati langkah ini.

  1. Buat tabel berdasarkan edisi kluster Anda.

    Contoh ini membuat tabel di kluster Community-compatible Edition single-replica. Jika kluster Anda adalah kluster double-replica yang menjalankan Edisi Perusahaan atau Edisi Kompatibel Komunitas, lihat Buat tabel.

     CREATE TABLE test_tb_local ON cluster default
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = MergeTree()
    ORDER BY id;
  2. Masukkan data sampel.

    INSERT INTO test_tb_local VALUES (13, 'tick', 25, 'shanghai', 'http://example.com');
  3. (Opsional) Lihat data.

    Jalankan pernyataan berikut untuk memverifikasi bahwa data telah dimasukkan.

    SELECT * FROM test_tb_local;

Langkah 3: Buat tabel eksternal OSS

Edisi Perusahaan atau Edisi Kompatibel Komunitas 22.8 atau lebih baru

Sintaksnya sebagai berikut:

CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('https://<bucket-name>.<oss-endpoint>/<file-name>', '<access-key-id>', '<access-key-secret>', '<file-format-name>');

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

Contoh

table_name

Nama tabel.

oss_test_tb

col_name1,col_name2

Nama kolom.

user_name

col_type1,col_type2

Tipe data kolom.

Penting

Skema tabel eksternal OSS harus konsisten dengan data di OSS.

String

bucket-name

Nama bucket OSS.

ck-test-oss

oss-endpoint

Titik akhir internal untuk mengakses bucket OSS dari instans ECS melalui VPC. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.

Penting

Pastikan bucket OSS dan kluster ApsaraDB for ClickHouse Anda berada di wilayah yang sama.

oss-cn-hangzhou-internal.aliyuncs.com

file-name

Nama objek di bucket OSS.

test.csv

access-key-id

ID AccessKey pengguna RAM untuk mengakses data OSS.

yourAccessKeyID

access-key-secret

Rahasia AccessKey pengguna RAM untuk mengakses data OSS.

Anda dapat menggunakan AccessKey yang sudah ada atau membuat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.

Penting

Untuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan saat Anda membuatnya dan tidak dapat diambil kembali nanti. Pastikan Anda menyimpan rahasia AccessKey dengan aman.

yourAccessKeySecret

file-format-name

Format objek.

Penting

Nilainya harus berupa format file case-sensitive yang didukung oleh ClickHouse. Untuk informasi selengkapnya, lihat format file yang didukung oleh ClickHouse.

CSV

Contoh:

CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('http://ck-test-oss.oss-cn-hangzhou-internal.aliyuncs.com/test.csv', 'LTAI****************', 'yourAccessKeySecret','CSV')

Edisi Kompatibel Komunitas 21.8 atau lebih lama

Sintaksnya sebagai berikut:

CREATE TABLE <table_name> [ON cluster default]
(
'col_name1' col_type1,
'col_name2' col_type2,
...
)
ENGINE = OSS('<oss-endpoint>', '<access-key-id>', '<access-key-secret>', '<oss-file-path>', '<file-format-name>');

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

Contoh

table_name

Nama tabel.

oss_test_tb

col_name1,col_name2

Nama kolom.

user_name

col_type1,col_type2

Tipe data kolom.

Penting

Skema tabel eksternal OSS harus konsisten dengan data di OSS.

String

oss-endpoint

Titik akhir internal untuk mengakses bucket OSS dari instans ECS melalui VPC. Untuk informasi selengkapnya, lihat Wilayah dan titik akhir.

Penting

Pastikan bucket OSS dan kluster ApsaraDB for ClickHouse Anda berada di wilayah yang sama.

oss-cn-hangzhou-internal.aliyuncs.com

access-key-id

ID AccessKey pengguna RAM untuk mengakses data OSS.

yourAccessKeyID

access-key-secret

Rahasia AccessKey pengguna RAM untuk mengakses data OSS.

Anda dapat menggunakan AccessKey yang sudah ada atau membuat yang baru. Untuk informasi selengkapnya, lihat Buat AccessKey.

Penting

Untuk mengurangi risiko kebocoran AccessKey, rahasia AccessKey hanya ditampilkan saat Anda membuatnya dan tidak dapat diambil kembali nanti. Pastikan Anda menyimpan rahasia AccessKey dengan aman.

yourAccessKeySecret

oss-file-path

Jalur penyimpanan objek, yang biasanya dalam format oss://<bucket-name>/<path-to-file>.

Catatan

Parameter oss-file-path mendukung pencocokan kabur dengan wildcard. Untuk informasi selengkapnya, lihat Gunakan wildcard untuk pencocokan kabur jalur penyimpanan di OSS.

oss://ck-test-oss/test.csv

file-format-name

Format objek.

Penting

Nilainya harus berupa format file case-sensitive yang didukung oleh ClickHouse. Untuk informasi selengkapnya, lihat format file yang didukung oleh ClickHouse.

CSV

Contoh:

CREATE TABLE oss_test_tb ON cluster default
(
id UInt8,
user_name String,
age UInt16,
city String,
access_url String
)
ENGINE = OSS('oss-cn-hangzhou-internal.aliyuncs.com', 'LTAI****************', 'yourAccessKeySecret', 'oss://ck-test-oss/test.csv', 'CSV');

Langkah 4: Ekspor atau tulis data ke OSS

Gunakan pernyataan INSERT INTO pada tabel eksternal OSS untuk mengekspor atau menulis data ke OSS. Untuk detail sintaksis, lihat INSERT INTO.

Ekspor data ClickHouse

Edisi Perusahaan atau Edisi Kompatibel Komunitas 22.8 atau lebih baru

  • Ekspor overwrite penuh (ekspor data ke OSS dan timpa data yang ada).

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 SELECT * FROM test_tb_local;
  • Ekspor inkremental (ekspor data ke OSS tanpa menimpa data yang ada).

    INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 SELECT * FROM test_tb_local;

    Operasi ini membuat file baru di bucket OSS. File baru diberi nama mengikuti pola berikut: nama file target + nomor urut (dimulai dari 0 dan bertambah 1) + nama format file.

    Misalnya, jika nama file target yang Anda tentukan saat membuat tabel eksternal OSS adalah test.csv, maka nama file baru adalah test0.csv. Jika operasi tersebut dijalankan kembali, nama file barunya menjadi test1.csv. Anda dapat menggunakan Konsol OSS untuk melihat file-file tersebut.

Edisi Kompatibel Komunitas 21.8 atau lebih lama

Penting

Mengekspor data ApsaraDB for ClickHouse ke OSS menimpa data yang ada. Harap berhati-hati.

INSERT INTO oss_test_tb  SELECT * FROM test_tb_local;

Tulis data

Edisi Perusahaan atau Edisi Kompatibel Komunitas 22.8 atau lebih baru

  • Tulis data baru ke OSS dan timpa data yang ada.

    INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');
  • Tulis data baru ke OSS tanpa menimpa data yang ada.

    INSERT INTO oss_test_tb SETTINGS s3_create_new_file_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');

    Operasi ini membuat file baru di bucket OSS. File baru diberi nama mengikuti pola berikut: nama file target + nomor urut (dimulai dari 0 dan bertambah 1) + nama format file.

    Misalnya, jika nama file target yang Anda tentukan saat membuat tabel eksternal OSS adalah test.csv, maka nama file baru adalah test0.csv. Jika operasi tersebut dijalankan kembali, nama file barunya menjadi test1.csv. Anda dapat menggunakan Konsol OSS untuk melihat file-file tersebut.

Edisi Kompatibel Komunitas 21.8 atau lebih lama

Penting

Menulis data dari ApsaraDB for ClickHouse ke OSS menimpa data yang ada. Harap berhati-hati.

INSERT INTO oss_test_tb SETTINGS s3_truncate_on_insert = 1 VALUES (14, 'tick', 25, 'shanghai', 'http://example.com');

Operasi lainnya: Impor data OSS ke ClickHouse

Jika Anda menggunakan Object Storage Service (OSS) sebagai penyimpanan perantara untuk migrasi data, Anda juga perlu mengimpor data dari OSS ke kluster tujuan. Untuk informasi selengkapnya, lihat Impor data dari OSS.