All Products
Search
Document Center

ApsaraDB for ClickHouse:Impor data menggunakan clickhouse-client

Last Updated:Aug 27, 2026

Gunakan clickhouse-client untuk mengimpor file lokal ke Alibaba Cloud ClickHouse.

Prasyarat

Prosedur

Contoh ini mengimpor file CSV ke tabel test_tbl_distributed dalam database default di Alibaba Cloud ClickHouse. Ganti parameter berikut dengan nilai aktual Anda:

  • Database tujuan: default

  • Tabel tujuan: test_tbl_distributed

  • File data sumber: testData.csv

Langkah 1: Siapkan data

Di direktori instalasi clickhouse-client, buat file testData.csv dengan konten berikut.

1,yang,32,shanghai,http://example.com
2,wang,22,beijing,http://example.com
3,xiao,23,shenzhen,http://example.com
4,jess,45,hangzhou,http://example.com
5,jack,14,shanghai,http://example.com
6,tomy,25,hangzhou,http://example.com
7,lucy,45,shanghai,http://example.com
8,tengyin,26,shanghai,http://example.com
9,wangli,27,shenzhen,http://example.com
10,xiaohua,37,shanghai,http://example.com

Langkah 2: Buat tabel

  1. Hubungkan ke database.

    Alibaba Cloud ClickHouse terintegrasi dengan Data Management Service (DMS). Hubungkan ke kluster ClickHouse menggunakan DMS.

    Klien lainnya: Hubungkan ke database.

  2. Buat tabel sesuai edisi kluster Anda.

    Penting

    Urutan kolom dan tipe data harus sesuai dengan file sumber.

    Edisi Perusahaan hanya memerlukan tabel lokal. Edisi Kompatibel Komunitas mungkin juga memerlukan tabel terdistribusi. Referensi sintaksis CREATE TABLE.

    Edisi Perusahaan

    CREATE TABLE test_tbl_local ON cluster default 
    (
    id UInt8,
    user_name String,
    age UInt16,
    city String,
    access_url String
    )
    ENGINE = MergeTree()
    ORDER BY id;

    Jika Anda menerima pesan error ON CLUSTER is not allowed for Replicated database saat menjalankan pernyataan ini, Anda dapat meningkatkan versi mesin minor untuk memperbaiki error tersebut.

    Edisi kompatibel komunitas

    Pilih engine berdasarkan jenis replika kluster Anda.

    Penting

    Saat membuat tabel di kluster dual-replika, Anda harus menggunakan engine Replicated dari family engine MergeTree. Jika Anda membuat tabel dengan engine non-Replicated di kluster dual-replika, data tidak dapat direplikasi antar replika, yang dapat menyebabkan inkonsistensi data.

    Single-replica

    1. Buat tabel lokal.

      CREATE TABLE test_tbl_local ON cluster default
      (
      id UInt8,
      user_name String,
      age UInt16,
      city String,
      access_url String
      )
      ENGINE = MergeTree()
      ORDER BY id;
    2. (Opsional) Buat tabel terdistribusi.

      Lewati langkah ini jika Anda hanya memerlukan tabel lokal.

      Disarankan untuk kluster multi-node.

      CREATE TABLE test_tbl_distributed ON cluster default
      (
      id UInt8,
      user_name String,
      age UInt16,
      city String,
      access_url String
      )
      ENGINE = Distributed(default, default, test_tbl_local, rand());

    Two-replica

    1. Buat tabel lokal.

      CREATE TABLE test_tbl_local ON cluster default
      (
      id UInt8,
      user_name String,
      age UInt16,
      city String,
      access_url String
      )
      ENGINE = ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}')
      order by id;
    2. (Opsional) Buat tabel terdistribusi.

      Lewati langkah ini jika Anda hanya memerlukan tabel lokal.

      Disarankan untuk kluster multi-node.

      CREATE TABLE test_tbl_distributed ON cluster default
      (
      id UInt8,
      user_name String,
      age UInt16,
      city String,
      access_url String
      )
      ENGINE = Distributed(default, default, test_tbl_local, rand());

Langkah 3: Impor data

Jalankan perintah berikut dari direktori instalasi clickhouse-client.

Untuk mempercepat impor, pisahkan file sumber dan jalankan beberapa klien secara paralel.

Untuk kluster multi-node, impor ke tabel terdistribusi.

cat <file_name> | ./clickhouse-client --host=<host> --port=<port> --user=<user> --password=<password> --query="INSERT INTO <table_name> FORMAT <file_type>";

Parameter

Deskripsi

file_name

Jalur file sumber.

host

Titik akhir publik atau VPC kluster, tersedia di halaman Cluster Information.

Pilih titik akhir berdasarkan lokasi clickhouse-client:

  • Pada Instance ECS Alibaba Cloud:

    Jika instance berada dalam VPC yang sama dengan kluster Alibaba Cloud ClickHouse: gunakan titik akhir VPC untuk impor lebih cepat.

    Jika instance berada dalam VPC yang berbeda dari kluster Alibaba Cloud ClickHouse: gunakan titik akhir publik.

  • Pada server selain Instance ECS Alibaba Cloud, gunakan titik akhir publik.

Ajukan atau lepas titik akhir publik.

port

Port TCP, tersedia di halaman Cluster Information.

user

Akun database.

password

Password akun database.

table_name

Nama tabel tujuan. Untuk tabel terdistribusi, gunakan nama tabel terdistribusi.

file_type

Format file sumber.

Langkah 4: Verifikasi hasil impor

  1. Hubungkan ke kluster.

    Hubungkan ke kluster ClickHouse menggunakan DMS.

  2. Jalankan pernyataan kueri.

    Penting

    Pada kluster Edisi Kompatibel Komunitas multi-node, kueri tabel terdistribusi untuk melihat semua data. Tabel lokal hanya mengembalikan data dari satu node.

    SELECT * FROM test_tbl_local; 

    Output yang diharapkan:

    +--------------+---------------------+---------------+----------------+----------------------+
    | id           | user_name           | age           | city           | access_url           |
    +--------------+---------------------+---------------+----------------+----------------------+
    | 1            | yang                | 32            | shanghai       | http://example.com   |
    | 2            | wang                | 22            | beijing        | http://example.com   |
    | 3            | xiao                | 23            | shenzhen       | http://example.com   |
    | 4            | jess                | 45            | hangzhou       | http://example.com   |
    | 5            | jack                | 14            | shanghai       | http://example.com   |
    | 6            | tomy                | 25            | hangzhou       | http://example.com   |
    | 7            | lucy                | 45            | shanghai       | http://example.com   |
    | 8            | tengyin             | 26            | shanghai       | http://example.com   |
    | 9            | wangli              | 27            | shenzhen       | http://example.com   |
    | 10           | xiaohua             | 37            | shanghai       | http://example.com   |
    +--------------+---------------------+---------------+----------------+----------------------+

Format file yang didukung

Format file umum yang didukung:

Penting
  • Setiap baris merepresentasikan satu baris data. Urutan kolom harus sesuai dengan definisi tabel.

  • Untuk format yang memiliki header, baris header diabaikan. Impor bergantung pada urutan kolom, bukan nama atau tipe header.

Format

Persyaratan teks

Contoh

TabSeparated

  • Satu baris per entri, dengan kolom dipisahkan oleh tab.

  • Escape karakter tab, baris baru, dan backslash sebagai \t, \n, dan \\, berturut-turut.

  • NULL direpresentasikan oleh \N.

John\t28\tSoftware Engineer\n
Alice\t32\tData Analyst\n
Bob\t25\tProduct Manager\n

TabSeparatedWithNames

Sama seperti TabSeparated, tetapi baris pertama berisi nama kolom (diabaikan saat penguraian).

Name\tAge\tOccupation\n
John\t28\tSoftware Engineer\n
Alice\t32\tData Analyst\n
Bob\t25\tProduct Manager\n

TabSeparatedWithNamesAndTypes

Sama seperti TabSeparated, tetapi baris pertama berisi nama kolom dan baris kedua berisi tipe data. Kedua baris diabaikan saat penguraian.

Name\tAge\tOccupation\n
String\tUInt16\tString\n
John\t28\tSoftware Engineer\n
Alice\t32\tData Analyst\n
Bob\t25\tProduct Manager\n

CSV

  • Satu entri per baris.

  • Escape tanda kutip ganda dengan menduplikasinya. Contoh: "Hello, World!" menjadi ""Hello, World!"".

  • Nilai numerik tidak dikutip.

  • Delimiter default adalah ,. Gunakan --format_csv_delimiter untuk menentukan delimiter berbeda. Contoh dengan delimiter garis vertikal:

    cat testData.csv | ./clickhouse-client --format_csv_delimiter="|" --host=cc-bp163l724nkf8****.clickhouse.ads.aliyuncs.com --port=3306 --user=test --password=123456Aa --query="INSERT INTO test_tbl_distributed FORMAT CSV";
John,28,Software Engineer
Alice,32,Data Analyst
Bob,25,Product Manager

CSVWithNames

Sama seperti CSV, tetapi baris pertama berisi nama kolom (diabaikan saat penguraian).

id,name,age,city,access_url
1,yang,32,shanghai,http://example.com
2,wang,22,beijing,http://example.com
3,xiao,23,shenzhen,http://example.com

Referensi lengkap format: Format untuk Data Input dan Output.

Referensi

Metode migrasi lainnya: Migrasi dan sinkronisasi data.