創建表
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. |