MySQL數據導入到ClickHouse


創建表

create database test;
use test;

 導入數據

CREATE TABLE dg_sku_inventory_day ENGINE = MergeTree ORDER BY id AS SELECT * FROM mysql('192.168.1.20:3306', 'dgdata', 'dg_sku_inventory_day', 'root', '123456');
前提條件:
MySQL的主鍵必須為not null
192.168.1.20:3306 為MySQL的IP地址和端口號 dgdata 為MySQL的庫,作為數據源的 dg_sku_inventory_day 為MySQL的表,源表 root 為MySQL的賬號 123456 為MySQL的賬號對應的密碼 賬號需要具備遠程連接訪問的權限。

解釋:導入數據598萬行,耗時82.305,總大小1.31GB 最后一次每秒7.264萬行導入,每秒導入15.89MB的數據。

注意:
1.order by 必須存在,字段大小要和MySQL的大小寫一樣
2.主鍵列在MySQL中必須定義為NOT NULL(報錯:DB::Exception: Sorting key cannot contain nullable columns.) 
3.導入速度和mysql的列有關,若列較少導入的更快,和硬件的讀取寫入速度,網絡帶寬也有影響。 
4.支持從TiDB和MySQL直接讀取數據。

查看表結構

clickhouse 左圖                                                                          mysql 右圖

 這時候,發現mysql中字段inventory_money 原本是decimal類型的,在clickhouse變成了String類型。

 

ClickHouse 與 Mysql 字段映射關系比表

ClickHouse MySQL Comment
UInt8, UInt16, UInt32, UInt64 TINYINT UNSIGNED, SMALLINT UNSIGNED, INT UNSIGNED, BIGINT UNSIGNED  
Int8, Int16, Int32, Int64 TINYINT SIGNED, SMALLINT SIGNED, INT SIGNED, BIGINT SIGNED  
Float32, Float64 FLOAT, DOUBLE Supports inf, -inf, nan, recommended NOT to use by ClickHouse!
String BLOB, TEXT, VARCHAR, VARBINARY No encoding. Recommended to use UTF-8. In fact behaves like a BLOB.
FixedString(n) CHAR, BINARY \0 padded. Less functions available than String, in fact it behaves like BINARY.
Date DATE UNIX epoch date up to 2038.
DateTime DATETIME, TIMESTAMP UNIX epoch timestamp up to 2038.
Enum ENUM Similar to MySQL ENUM. Behaves like Int8/16.
Array(type) n.a. Array of type. Closest equivalent in MySQL is JSON? Not well supported.
Tuple() n.a.  
Nested() n.a. Closest equivalent in MySQL is JSON?
AggregateFunction() n.a.  
Set n.a.  
Expression n.a.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM