Gunakan clickhouse-client untuk mengimpor file lokal ke Alibaba Cloud ClickHouse.
Prasyarat
-
Akun database telah dibuat. Kelola akun kluster Edisi Kompatibel Komunitas | Kelola akun kluster Edisi Perusahaan.
-
clickhouse-client (versi ≥ versi kluster Anda) telah diinstal. Instal clickhouse-client.
CatatanImpor melalui jaringan publik berjalan lambat. Untuk set data besar, gunakan jaringan internal.
Instal clickhouse-client pada Instance ECS yang berada dalam VPC yang sama dengan kluster Alibaba Cloud ClickHouse Anda, lalu hubungkan melalui titik akhir VPC.
Instance ECS memerlukan akses jaringan publik untuk menginstal clickhouse-client.
-
Jika Anda belum membeli Instance ECS, pilih Public IP Address saat membeli instance tersebut. Buat instance menggunakan wizard.
-
Jika Instance ECS yang sudah ada tidak memiliki IP publik, asosiasikan EIP dengannya. Asosiasikan Elastic IP Address (EIP).
-
-
IP server clickhouse-client telah ditambahkan ke daftar putih Alibaba Cloud ClickHouse. Atur Daftar Putih.
-
File sumber menggunakan format yang didukung. Format file yang didukung.
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
-
Hubungkan ke database.
Alibaba Cloud ClickHouse terintegrasi dengan Data Management Service (DMS). Hubungkan ke kluster ClickHouse menggunakan DMS.
Klien lainnya: Hubungkan ke database.
-
Buat tabel sesuai edisi kluster Anda.
PentingUrutan 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 databasesaat menjalankan pernyataan ini, Anda dapat meningkatkan versi mesin minor untuk memperbaiki error tersebut.Edisi kompatibel komunitas
Pilih engine berdasarkan jenis replika kluster Anda.
PentingSaat 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
-
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; -
(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
-
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; -
(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:
|
|
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
-
Hubungkan ke kluster.
-
Jalankan pernyataan kueri.
PentingPada 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:
-
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 |
|
|
|
TabSeparatedWithNames |
Sama seperti TabSeparated, tetapi baris pertama berisi nama kolom (diabaikan saat penguraian). |
|
|
TabSeparatedWithNamesAndTypes |
Sama seperti TabSeparated, tetapi baris pertama berisi nama kolom dan baris kedua berisi tipe data. Kedua baris diabaikan saat penguraian. |
|
|
CSV |
|
|
|
CSVWithNames |
Sama seperti CSV, tetapi baris pertama berisi nama kolom (diabaikan saat penguraian). |
|
Referensi lengkap format: Format untuk Data Input dan Output.
Referensi
Metode migrasi lainnya: Migrasi dan sinkronisasi data.