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.
CatatanMengimpor 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:
Instance baru: Centang Assign Public IPv4 Address saat pembelian. Untuk detail pembelian, lihat Buat instance menggunakan wizard.
Instance yang sudah ada tanpa akses publik: Asosiasikan Elastic IP Address (EIP).
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.comLangkah 2: Buat tabel
Hubungkan ke database.
Anda dapat menggunakan DMS untuk menghubungkan ke kluster ClickHouse.
Jika Anda menggunakan klien lain, lihat Hubungkan ke database.
Buat tabel berdasarkan edisi kluster Anda.
PentingPengimporan 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.
PentingSaat 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
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.
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
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.
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:
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
Hubungkan ke kluster.
Jalankan pernyataan kueri.
PentingPada 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.
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 |
| |
TabSeparatedWithNames | Format ini mirip dengan TabSeparated, tetapi baris pertama berisi nama kolom. Baris header ini diabaikan selama penguraian. | |
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. | |
CSV |
| |
CSVWithNames | Format ini mirip dengan CSV, kecuali baris pertama berisi nama kolom. Saat teks diurai, baris pertama diabaikan. | |
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.