當您需要將本地文件的數據導入到云數據庫ClickHouse時,本文將指導您如何通過clickhouse-client工具進行數據導入,以幫助您快速的完成數據導入。
注意事項
支持導入到云數據庫ClickHouse的常見文件格式為TabSeparated、TabSeparatedWithNames、TabSeparatedWithNamesAndTypes、CSV和CSVWithNames。常見文件格式說明,詳情請參見常見文件格式。若您的文件為其他格式,需滿足ClickHouse社區標準,更多信息請參見文件格式及說明。
前提條件
已將本地機器的IP地址添加到云數據庫ClickHouse的白名單中。如何添加白名單,詳情請參見設置白名單。
已安裝與云數據庫ClickHouse集群版本對應的clickhouse-client工具。下載鏈接,請參見clickhouse-client。
步驟一:準備測試數據
在clickhouse-client客戶端的安裝目錄下,創建文件testdata.csv并寫入如下數據。
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
步驟二:創建云數據庫ClickHouse表
在頁面左上角,選擇目標集群所在的地域。
在集群列表頁面,根據您的集群類型選擇對應的頁簽,單擊目標集群ID。
單擊右上方導航欄的登錄數據庫。
在登錄實例頁面,輸入數據庫賬號和密碼,單擊登錄。
創建表。
說明云數據庫ClickHouse表的結構類型需與本地文件數據類型對應。
創建本地表:
如果您的集群是單副本版,請輸入如下建表語句。
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;
如果您的集群是雙副本版,請輸入如下建表語句。
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;
創建分布式表。
說明如果您只需要導入本地文件數據至本地表,可跳過此步驟。
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());
步驟三:導入本地文件數據
在clickhouse-client客戶端的安裝目錄下執行如下命令。
cat <本地文件名> | ./clickhouse-client --host=<數據庫連接地址> --port=<TCP端口號> --user=<數據庫賬號> --password=<數據庫賬號的密碼> --query="INSERT INTO <ClickHouse表名> FORMAT <本地文件格式>";
外網導入數據速度較慢,如果數據量較大或者測試導入性能,您可以采用如下方法。
內網導入:購買與云數據庫ClickHouse集群在同一個VPC網絡的ECS實例,從ECS通過VPC地址連接云數據庫ClickHouse集群并導入數據。
多進程導入:將原始文件等分為多份,啟動多個client多進程并發導入。
步驟四:查詢云數據庫ClickHouse表
通過DMS連接集群,詳情請參見通過DMS連接ClickHouse。
執行查詢語句。
SELECT * FROM test_tbl_distributed;
說明如果您導入的是本地表,請將查詢語句中的分布式表名更換為本地表名,再進行查詢。
查詢結果如下。
常見文件格式
云數據庫ClickHouse支持常見文件格式如下。
常見文件格式 | 說明 |
TabSeparated | 數據按行寫入文本文件中,列與列之間通過Tab分割。需要對Tab、換行符、反斜線進行轉義處理,分別對應為: |
TabSeparatedWithNames | 與TabSeparated類似,區別是第一行是列名。解析時,第一行會被忽略,因此不能夠使用第一行列名來決定列的位置。 |
TabSeparatedWithNamesAndTypes | 與TabSeparated類似,區別是第一行是列名,第二行是類型。解析時,第一行、第二行都會被忽略。 |
CSV | 數據按行寫入文件中。字符串類型使用英文雙引號括起來,字符串本身的雙引號用兩個雙引號進行轉義,數值類型不使用雙引號。默認列分隔符為
|
CSVWithNames | 與CSV類似,區別是第一行表示列名。解析時,第一行會被忽略,因此不能夠使用第一行列名來決定列的位置。 |