全部产品
Search
文档中心

ApsaraDB for ClickHouse:Impor data menggunakan clickhouse-client

更新时间:Jan 07, 2026

Topik ini menjelaskan cara menggunakan tool clickhouse-client untuk mengimpor data dari file lokal ke ApsaraDB for ClickHouse.

Prasyarat

  • Buat akun database. Untuk informasi selengkapnya, lihat Kelola akun kluster Edisi Kompatibel Komunitas dan Kelola akun kluster Edisi Perusahaan.

  • Instal clickhouse-client dengan versi yang sama atau lebih baru dari versi kluster Anda.

    Catatan

    Mengimpor data melalui jaringan publik berjalan lambat. Untuk set data besar atau pengujian performa, disarankan mengimpor data melalui jaringan internal.

    Untuk mengimpor data melalui jaringan internal:

    • Instance ECS harus berada dalam Virtual Private Cloud (VPC) yang sama dengan kluster ApsaraDB for ClickHouse.

    • Gunakan titik akhir VPC untuk terhubung ke kluster ClickHouse.

    • Aktifkan akses jaringan publik pada instance ECS untuk menginstal tool clickhouse-client:

  • Tambahkan alamat IP server yang menjalankan tool clickhouse-client ke daftar putih ApsaraDB for ClickHouse. Untuk detailnya, lihat Setel Daftar Putih.

  • File sumber berada dalam format yang didukung.

Prosedur

Topik ini memberikan contoh cara mengimpor data dari file CSV ke tabel terdistribusi dalam kluster ApsaraDB for ClickHouse. Dalam praktiknya, sesuaikan parameter sesuai kebutuhan bisnis Anda. Contoh ini menggunakan lingkungan berikut:

  • Database tujuan: default

  • Tabel tujuan: test_tbl_distributed

  • File data sumber: testData.csv

Langkah 1: Siapkan data

Di direktori instalasi clickhouse-client, buat file bernama testData.csv dan tambahkan data berikut ke dalamnya.

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.

    Anda dapat menggunakan DMS untuk menghubungkan ke kluster ClickHouse.

    Jika Anda menggunakan klien lain, lihat Hubungkan ke database.

  2. Buat tabel berdasarkan edisi kluster Anda.

    Penting

    Pengimporan data dapat gagal jika urutan kolom dan tipe data di tabel tujuan tidak persis sesuai dengan data di file sumber. Selalu verifikasi bahwa skema tabel sesuai dengan struktur file sebelum melakukan impor.

    Kluster Edisi Perusahaan hanya memerlukan pembuatan tabel lokal, sedangkan kluster Edisi Kompatibel Komunitas mungkin perlu membuat tabel terdistribusi berdasarkan lingkungan dan kebutuhan Anda. Berikut adalah contoh pernyataan. Untuk informasi selengkapnya tentang sintaks pembuatan tabel, lihat 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;

    Saat membuat tabel di kluster Edisi Perusahaan, Anda mungkin mendapatkan error ON CLUSTER is not allowed for Replicated database. Ini merupakan masalah yang diketahui pada versi minor lama. Untuk memperbaikinya, tingkatkan versi mesin minor kluster Anda.

    Edisi Kompatibel Komunitas

    Mesin untuk kluster satu-replika dan dua-replika berbeda. Pilih mesin berdasarkan tipe replika Anda.

    Penting

    Saat membuat tabel di kluster Edisi Dua-replika, Anda harus menggunakan mesin tabel Replicated dari family MergeTree. Jika Anda menggunakan mesin tabel non-replikasi, data tidak dapat direplikasi antar-replika, yang dapat menyebabkan inkonsistensi data.

    Satu-replika

    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.

      Jika Anda hanya perlu mengimpor data ke tabel lokal, langkah ini dapat dilewati.

      Jika Anda memiliki kluster multi-node, kami menyarankan Anda membuat tabel terdistribusi.

      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());

    Dua-replika

    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.

      Jika Anda hanya perlu mengimpor data ke tabel lokal, langkah ini dapat dilewati.

      Jika Anda memiliki kluster multi-node, kami menyarankan Anda membuat tabel terdistribusi.

      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

Di direktori instalasi clickhouse-client, jalankan perintah berikut.

Untuk mempercepat impor data, Anda dapat membagi file sumber menjadi beberapa bagian dan menjalankan beberapa proses klien secara paralel untuk mengimpor bagian-bagian tersebut.

Jika Anda memiliki kluster multi-node, kami menyarankan Anda mengimpor data 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 titik akhir VPC, yang ditampilkan di halaman Cluster Information.

Pilih titik akhir berdasarkan lokasi eksekusi tool clickhouse-client:

  • Instance ECS:

    ECS dalam VPC yang sama dengan kluster: Gunakan titik akhir VPC untuk impor data yang lebih cepat.

    ECS dalam VPC berbeda: Gunakan titik akhir publik.

  • Server non-ECS: Gunakan titik akhir publik.

Untuk informasi selengkapnya tentang cara mengajukan titik akhir publik untuk kluster, lihat Ajukan atau lepas titik akhir publik.

port

Nomor port TCP kluster, yang ditampilkan di halaman Cluster Information.

user

Akun database.

password

Password untuk akun database.

table_name

Nama tabel tujuan. Jika Anda membuat tabel terdistribusi, tentukan nama tabel terdistribusi tersebut.

file_type

Format file data sumber.

Langkah 4: Verifikasi hasil

  1. Hubungkan ke kluster.

  2. Jalankan pernyataan kueri.

    Penting

    Pada kluster Edisi Kompatibel Komunitas multi-node, selalu kueri tabel terdistribusi. Mengkueri tabel lokal secara langsung hanya mengembalikan hasil dari satu node saja, sehingga data Anda tidak lengkap.

    SELECT * FROM test_tbl_local;

    Hasil berikut dikembalikan.

    +--------------+---------------------+---------------+----------------+----------------------+
    | 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

Tabel berikut menjelaskan format file umum yang didukung.

Penting
  • Setiap baris dalam file bersesuaian dengan satu baris di tabel, dan setiap kolom dalam file bersesuaian dengan satu kolom di tabel.

  • Untuk format berikut, baris header yang berisi nama kolom atau tipe data diabaikan selama penguraian. Data diimpor berdasarkan urutan kolom tabel tujuan, bukan berdasarkan header di file sumber.

Format

Persyaratan

Contoh

TabSeparated

  • Data ditulis ke file teks baris demi baris, dengan kolom dipisahkan oleh tab.

  • Tab, line break, dan backslash harus di-escape. Urutan escape yang sesuai adalah \t, \n, dan \\, berturut-turut.

  • Nilai NULL direpresentasikan oleh \N.

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

TabSeparatedWithNames

Format ini mirip dengan TabSeparated, tetapi baris pertama berisi nama kolom. Baris header ini diabaikan selama penguraian.

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

TabSeparatedWithNamesAndTypes

Format ini mirip dengan TabSeparated, kecuali baris pertama berisi nama kolom dan baris kedua berisi tipe data. Saat teks diurai, baris pertama dan kedua diabaikan.

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

CSV

  • Data ditulis ke file baris demi baris.

  • Untuk meng-escape tanda kutip ganda (") di dalam string, gunakan dua tanda kutip ganda berturut-turut (""). Misalnya, untuk merepresentasikan teks "Hello, World!", Anda harus menulis ""Hello, World!"" di file.

  • Nilai numerik tidak diapit tanda kutip ganda.

  • Pemisah kolom default adalah koma (,). Anda dapat menentukan pemisah berbeda menggunakan opsi --format_csv_delimiter dalam perintah impor. Misalnya, untuk menggunakan garis vertikal (|) sebagai pemisah, jalankan perintah berikut:

    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

Format ini mirip dengan CSV, kecuali baris pertama berisi nama kolom. Saat teks diurai, baris pertama diabaikan.

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

Untuk informasi selengkapnya tentang format file, lihat Formats for Input and Output Data.

Dokumen terkait

Untuk informasi selengkapnya tentang solusi migrasi dan sinkronisasi data, lihat Migrasi dan sinkronisasi data.