javascript
03_ClickHouse数据格式,TabSeparated、TSKV、CSV格式、JSON格式、Parquet、ORC、其它数据格式(Native,Pretty,Values,Vertical等)
1、TabSeparated
1.1 TabSeparated
1.2 TabSeparatedRaw
1.3 TabSeparatedWithNames
1.4 TabSeparatedWithNamesAndTypes
2 TSKV
3 CSV格式:CSV、CSVWithNames
3.1 CSV格式
3.1.1 準備表
3.1.2 準備數據
3.1.3 導入csv格式的表
3.2 CSVWithNames
4 JSON系列格式
4.1 JSON
4.2 JSONCompact
4.3 JSONEachRow
5 Parquet
6 ORC
7 其它常見的數據格式
7.1 Native
7.2 Null
7.3 Pretty
7.4 Values
7.5 Vertical
7.6 XML
1、TabSeparated
這個系列的格式包括:TabSeparated、TabSeparatedRaw、TabSeparatedWithNames和TabSeparatedWithNamesAndTypes
特點:
數據按行寫入,tab制表符分隔。使用嚴格Unix命令行。
默認格式:
簡寫:TSV
數據插入和數據查詢時,均可使用。
1.1 TabSeparated
數據按行寫入,tab制表符分隔。使用嚴格Unix命令行。
注意:最后一行必須包含換行符。
默認格式。
簡寫:TSV
數據插入和數據查詢時,均可使用。
使用clickhouse-client query的方式查詢10條結果,并將值存儲到aaa.tsv格式里面。
[root@xxxxx ~]# clickhouse-client --query "select WatchID,JavaEnable,Title,RegionID,UserID,EventDate,CounterID from tutorial.hits_v1 limit 10 FORMAT TabSeparated" > aaa.tsv [root@xxxxx ~]# [root@xxxxx ~]# cat aaa.tsv 7043438415214026105 1 14050 8585742290196126178 2014-03-17 57 4944118417295196513 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4675118455796596620 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 5996666368919599438 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4907059686366943622 1 54 610708775678702928 2014-03-17 57 9126318258181481721 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4710091431795314620 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 8986102154348410145 1 54 610708775678702928 2014-03-17 57 8632456315223530327 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 8894287528226995594 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 [root@xxxxx ~]#建表,并按照TabSeparated格式導入數據到表中
[root@xxxxx ~]# clickhouse-client -m ClickHouse client version 20.9.3.45 (official build). Connecting to localhost:9000 as user default. Connected to ClickHouse server version 20.9.3 revision 54439.xxxxx :) CREATE TABLE test.TabSeparated_demo :-] ( :-] `WatchID` UInt64, :-] `JavaEnable` UInt8, :-] `Title` String, :-] `RegionID` UInt32, :-] `UserID` UInt64, :-] `EventDate` Date, :-] `CounterID` UInt32 :-] ) :-] ENGINE = MergeTree() :-] PARTITION BY toYYYYMM(EventDate) :-] ORDER BY (CounterID, EventDate, intHash32(UserID)) :-] SAMPLE BY intHash32(UserID) :-] SETTINGS index_granularity = 8192;CREATE TABLE test.TabSeparated_demo (`WatchID` UInt64,`JavaEnable` UInt8,`Title` String,`RegionID` UInt32,`UserID` UInt64,`EventDate` Date,`CounterID` UInt32 ) ENGINE = MergeTree() PARTITION BY toYYYYMM(EventDate) ORDER BY (CounterID, EventDate, intHash32(UserID)) SAMPLE BY intHash32(UserID) SETTINGS index_granularity = 8192Ok.0 rows in set. Elapsed: 0.008 sec. xxxxx :)導入數據到表中
[root@xxxxx ~]# clickhouse-client --query "INSERT INTO test.TabSeparated_demo FORMAT TabSeparated" --max_insert_block_size=100000 < aaa.tsv [root@xxxxx ~]# clickhouse-client --query "select * from test.TabSeparated_demo FORMAT TabSeparated" 7043438415214026105 1 14050 8585742290196126178 2014-03-17 57 4944118417295196513 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4675118455796596620 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 5996666368919599438 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4907059686366943622 1 54 610708775678702928 2014-03-17 57 9126318258181481721 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4710091431795314620 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 8986102154348410145 1 54 610708775678702928 2014-03-17 57 8632456315223530327 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 8894287528226995594 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 [root@xxxxx ~]#如果在導入過程中出現類似下面的錯誤:
Code: 117. DB::Exception: You have carriage return (\r, 0x0D, ASCII 13) at end of first row. It's like your input data has DOS/Windows style line separators, that are illegal in TabSeparated format. You must transform your file to Unix format. But if you really need carriage return at end of string value of last column, you need to escape it as \r.這是windows使用\r\n表示回車換行,在Linux中使用\n表示換行。因此,需要將\r給去掉。
轉換為UNIX格式:
[root@xxxxx ~]# yum install -y dos2unix; (在沒有dos2Unix的時候執行) 已加載插件:fastestmirror base | 3.6 kB 00:00:00 extras | 2.9 kB 00:00:00 mysql-connectors-community | 2.6 kB 00:00:00 mysql-tools-community | 2.6 kB 00:00:00 mysql57-community | 2.6 kB 00:00:00 updates | 2.9 kB 00:00:00 Loading mirror speeds from cached hostfile* base: mirrors.huaweicloud.com* extras: mirrors.huaweicloud.com* updates: mirrors.huaweicloud.com 正在解決依賴關系 --> 正在檢查事務 ---> 軟件包 dos2unix.x86_64.0.6.0.3-7.el7 將被 安裝 --> 解決依賴關系完成依賴關系解決=======================================================================================================================================================================================================Package 架構 版本 源 大小 ======================================================================================================================================================================================================= 正在安裝:dos2unix x86_64 6.0.3-7.el7 base 74 k事務概要 ======================================================================================================================================================================================================= 安裝 1 軟件包總下載量:74 k 安裝大小:190 k Downloading packages: dos2unix-6.0.3-7.el7.x86_64.rpm | 74 kB 00:00:05 Running transaction check Running transaction test Transaction test succeeded Running transaction正在安裝 : dos2unix-6.0.3-7.el7.x86_64 1/1 驗證中 : dos2unix-6.0.3-7.el7.x86_64 1/1 已安裝:dos2unix.x86_64 0:6.0.3-7.el7 完畢! [root@xxxxx ~]# [root@xxxxx ~]# dos2unix tsv_demo.tsv1.2 TabSeparatedRaw
簡稱:TSVRaw
TabSeparatedRaw格式不會對行數據進行轉義,即不會將換行、制表符等轉換為轉義字符。
只能在數據查詢的時候使用。
建表語句:
create table escape_demo(name String,addr String,age UInt8,desc String) ENGINE=TinyLog;select * from escape_demo FORMAT TSV; zhangsan nanjing\tjiangsu 23 From nanjing lisi hangzhou\tzhejiang 32 A amazing place xiaoming hefei\tanhui 25 notepad3 rows in set. Elapsed: 0.005 sec.SELECT * FROM escape_demo FORMAT TabSeparatedRaw;zhangsan nanjing jiangsu 23 From nanjing lisi hangzhou zhejiang 32 A amazing place xiaoming hefei anhui 25 notepad3 rows in set. Elapsed: 0.005 sec1.3 TabSeparatedWithNames
在查詢時,TabSeparatedWithNames格式的第一行顯示列的名稱
在數據導入時,第一行完全被忽略,不會解析第一行為表頭。
簡稱:TSVWithNames
在數據查詢和數據導入均可使用。
數據導入:
clickhouse-client --query="INSERT INTO escape_demo FORMAT TSVWithNames" < escape_demo.tsv數據查詢:
select * from escape_demo FORMAT TSVWithNames;再如查詢:
xxxxx :) use tutorial;USE tutorialOk.0 rows in set. Elapsed: 0.002 sec. xxxxx :) show tables;SHOW TABLES┌─name──────┐ │ hits_v1 │ │ visits_v1 │ └───────────┘2 rows in set. Elapsed: 0.005 sec. xxxxx :) select WatchID,JavaEnable,Title,RegionID,UserID,EventDate,CounterID from tutorial.hits_v1 limit 10 FORMAT TSVWithNames;SELECT WatchID,JavaEnable,Title,RegionID,UserID,EventDate,CounterID FROM tutorial.hits_v1 LIMIT 10 FORMAT TSVWithNames## 注意下面的第一行數據,這一行數據是表頭。WatchID JavaEnable Title RegionID UserID EventDate CounterID 7043438415214026105 1 14050 8585742290196126178 2014-03-17 57 4944118417295196513 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4675118455796596620 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 5996666368919599438 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4907059686366943622 1 54 610708775678702928 2014-03-17 57 9126318258181481721 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 4710091431795314620 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 8986102154348410145 1 54 610708775678702928 2014-03-17 57 8632456315223530327 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 57 8894287528226995594 1 вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва 54 610708775678702928 2014-03-17 5710 rows in set. Elapsed: 0.014 sec. xxxxx :)1.4 TabSeparatedWithNamesAndTypes
在查詢時,TabSeparatedWithNamesAndTypes格式在主數據的前面額外顯示兩行數據,第一行顯示列的名稱, 第二行顯示列的數據類型。
在數據導入時,前面兩行的數據完全被忽略。
簡寫:TSVWithNamesAndTypes
在數據導入和查詢時均可使用。
2 TSKV
TSKV格式不適合有大量小列的輸出.
TSKV的效率并不比JSONEachRow差.
TSKV數據查詢和數據導入。
不需要保證列的順序。
支持忽略某些值,這些列使用默認值,例如0和空白行。復雜類型的值必須指定,無法使用默認值。
查看:
xxxxx :) select WatchID,JavaEnable,Title,RegionID,UserID,EventDate,CounterID from tutorial.hits_v1 limit 10 FORMAT TSKV;SELECT WatchID,JavaEnable,Title,RegionID,UserID,EventDate,CounterID FROM tutorial.hits_v1 LIMIT 10 FORMAT TSKVWatchID=7043438415214026105 JavaEnable=1 Title= RegionID=14050 UserID=8585742290196126178 EventDate=2014-03-17 CounterID=57 WatchID=4944118417295196513 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=4675118455796596620 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=5996666368919599438 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=4907059686366943622 JavaEnable=1 Title= RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=9126318258181481721 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=4710091431795314620 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=8986102154348410145 JavaEnable=1 Title= RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=8632456315223530327 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=8894287528226995594 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=5710 rows in set. Elapsed: 0.012 sec. xxxxx :)導出:
[root@xxxxx ~]# clickhouse-client --query "select WatchID,JavaEnable,Title,RegionID,UserID,EventDate,CounterID from tutorial.hits_v1 limit 10 FORMAT TSKV" > tskv.demo [root@xxxxx ~]# cat tskv.demo WatchID=7043438415214026105 JavaEnable=1 Title= RegionID=14050 UserID=8585742290196126178 EventDate=2014-03-17 CounterID=57 WatchID=4944118417295196513 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=4675118455796596620 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=5996666368919599438 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=4907059686366943622 JavaEnable=1 Title= RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=9126318258181481721 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=4710091431795314620 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=8986102154348410145 JavaEnable=1 Title= RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=8632456315223530327 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 WatchID=8894287528226995594 JavaEnable=1 Title=вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID=54 UserID=610708775678702928 EventDate=2014-03-17 CounterID=57 [root@xxxxx ~]#建表
[root@xxxxx ~]# clickhouse-client -m ClickHouse client version 20.9.3.45 (official build). Connecting to localhost:9000 as user default. Connected to ClickHouse server version 20.9.3 revision 54439.xxxxx :) create table escape_demo( :-] `WatchID` UInt64, :-] `JavaEnable` UInt8, :-] `Title` String, :-] `RegionID` UInt32, :-] `UserID` UInt64, :-] `EventDate` Date, :-] `CounterID` UInt32 :-] ) ENGINE=TinyLog :-] PARTITION BY toYYYYMM(EventDate) :-] ORDER BY (CounterID, EventDate, intHash32(UserID)) :-] SAMPLE BY intHash32(UserID) :-] SETTINGS index_granularity = 8192;CREATE TABLE escape_demo (`WatchID` UInt64,`JavaEnable` UInt8,`Title` String,`RegionID` UInt32,`UserID` UInt64,`EventDate` Date,`CounterID` UInt32 ) ENGINE = TinyLog PARTITION BY toYYYYMM(EventDate) ORDER BY (CounterID, EventDate, intHash32(UserID)) SAMPLE BY intHash32(UserID) SETTINGS index_granularity = 8192Received exception from server (version 20.9.3): Code: 57. DB::Exception: Received from localhost:9000. DB::Exception: Table default.escape_demo already exists.. 0 rows in set. Elapsed: 0.017 sec. xxxxx :)導入:
clickhouse-client --query "insert into escape_demo FORMAT TSKV" < tskv.demo3 CSV格式:CSV、CSVWithNames
3.1 CSV格式
CSV默認的分隔符為逗號,format_csv_delimiter設置自定義的分隔符。
CSV中的雙引號使用兩個雙引號轉義。
支持數據的查詢和數據導入。
3.1.1 準備表
[root@xxxxx ~]# clickhouse-client -m ClickHouse client version 20.9.3.45 (official build). Connecting to localhost:9000 as user default. Connected to ClickHouse server version 20.9.3 revision 54439.xxxxx :) create table csv_demo(create_date Date, update_time DateTime, desc String) ENGINE=TinyLog;CREATE TABLE csv_demo (`create_date` Date,`update_time` DateTime,`desc` String ) ENGINE = TinyLogOk.0 rows in set. Elapsed: 0.008 sec. xxxxx :)3.1.2 準備數據
[root@xxxxx ~]# vim csv_dmeo.csv[root@xxxxx ~]# cat csv_dmeo.csv 2014-03-23|2014-03-23 14:10:14|Apache Spark achieves high performance 2014-03-23|2014-03-23 15:10:30|Spark offers over 80 high-level operators 1395990600|1395904200|Learning Apache "Spark" is easy [root@xxxxx ~]#3.1.3 導入csv格式的表
[root@xxxxx ~]# clickhouse-client --format_csv_delimiter="|" --query="INSERT INTO csv_demo FORMAT CSV" < csv_dmeo.csv [root@xxxxx ~]# xxxxx :) select * from csv_demo FORMAT CSV;SELECT * FROM csv_demo FORMAT CSV"2014-03-23","2014-03-23 14:10:14","Apache Spark achieves high performance" "2014-03-23","2014-03-23 15:10:30","Spark offers over 80 high-level operators" "1970-01-01","2014-03-27 15:10:00","Learning Apache ""Spark"" is easy"3 rows in set. Elapsed: 0.005 sec. xxxxx :)數據查看:
set format_csv_delimiter='|' select * from csv_demo FORMAT CSV;3.2 CSVWithNames
CSVWithNames會打印表頭的信息。
支持數據的導入和數據的查看。
4 JSON系列格式
JSON系列的有JSON、JSONCompact和JSONEachRow
4.1 JSON
JSON格式只支持數據的輸出,不支持數據的解析(數據導入)。
xxxxx :) create table t_json_demo(id UInt8, prov String) ENGINE=TinyLog;CREATE TABLE t_json_demo (`id` UInt8,`prov` String ) ENGINE = TinyLogOk.0 rows in set. Elapsed: 0.052 sec. xxxxx :) insert into t_json_demo values (1, 'jiangsu'),(1, 'jiangsu'),(2, 'anhui'),(2, 'anihu'),(3, 'beijing');INSERT INTO t_json_demo VALUESOk.5 rows in set. Elapsed: 0.005 sec. xxxxx :) select * from t_json_demo tjd FORMAT JSON;SELECT * FROM t_json_demo AS tjd FORMAT JSON{"meta":[{"name": "id","type": "UInt8"},{"name": "prov","type": "String"}],"data":[{"id": 1,"prov": "jiangsu"},{"id": 1,"prov": "jiangsu"},{"id": 2,"prov": "anhui"},{"id": 2,"prov": "anihu"},{"id": 3,"prov": "beijing"} ],"rows": 5,"statistics":{"elapsed": 0.005569144,"rows_read": 5,"bytes_read": 81} }5 rows in set. Elapsed: 0.010 sec. xxxxx :)默認情況下,Int64和UInit64的整型使用雙引號包裹,如果要移除雙引號,設置配置參數output_format_json_quote_64bit_integers為0
rows_before_limit_at_least : 只有查詢包含LIMIT時才輸出,只有在包含group by的語句中才有意義。當查詢沒有LIMIT時, 執行結果的最小行數。
xxxxx :) select * from t_json_demo tjd limit 2 FORMAT JSON;SELECT * FROM t_json_demo AS tjd LIMIT 2 FORMAT JSON{"meta":[{"name": "id","type": "UInt8"},{"name": "prov","type": "String"}],"data":[{"id": 1,"prov": "jiangsu"},{"id": 1,"prov": "jiangsu"} ],"rows": 2,"rows_before_limit_at_least": 2,"statistics":{"elapsed": 0.002507346,"rows_read": 2,"bytes_read": 34} }2 rows in set. Elapsed: 0.005 sec. xxxxx :)4.2 JSONCompact
JSON格式的數據以對象的方式輸出, 而JSONCompact以數組的方式輸出。
JSONCompact只支持數據的查看, 不支持數據的導入。
4.3 JSONEachRow
每行數據以換行符分隔的JSON對象。
支持數據的輸入和數據導入。
輸入導入:
對象中鍵值對的順序可任意排列。
可以缺失某些字段
缺失值的處理:
CREATE TABLE IF NOT EXISTS example_table (x UInt32,a DEFAULT x + 2 ) ENGINE = Memory;insert into example_table FORMAT JSONEachRow {"x":3, "a":5} {"x":4};效果圖:
xxxxx :) CREATE TABLE IF NOT EXISTS example_table :-] ( :-] x UInt32, :-] a DEFAULT x + 2 :-] ) ENGINE = Memory;CREATE TABLE IF NOT EXISTS example_table (`x` UInt32,`a` DEFAULT x + 2 ) ENGINE = MemoryOk.0 rows in set. Elapsed: 0.005 sec. xxxxx :) insert into example_table FORMAT JSONEachRow {"x":3,"a":5}{"x":4};INSERT INTO example_table FORMAT JSONEachRowOk.2 rows in set. Elapsed: 0.006 sec. xxxxx :) select * from example_table FORMAT JSONEachRow;SELECT * FROM example_table FORMAT JSONEachRow{"x":3,"a":"5"} {"x":4,"a":"6"}2 rows in set. Elapsed: 0.004 sec. xxxxx :)參數:input_format_defaults_for_omitted_fields
如果為0,則x和a的默認值等于0(即UInt32數據類型的默認值)
如果為1,則x的默認值等于0,但a的默認值等于x+2.
上面的例子說明:
如果要將類似:{“n”: { “s”: [“aaa”, “bbb”],“i”: [2, 30]}} 這種分層JSON對象插入,需要設置input_format_import_nested_json=1。即執行set input_format_import_nested_json=1;
對于ClickHouse,默認input_format_import_nested_json=0。
5 Parquet
支持Parquet格式的導出和導入。
Parquet和ClickHouse類型的匹配關系:
Parquet data type (INSERT)| ClickHouse data type| Parquet data type (SELECT)
UINT8,BOOL UInt8 UINT8
INT8 Int8 INT8
UINT16 UInt16 UINT16
INT16 Int16 INT16
UINT32 UInt32 UINT32
INT32 Int32 INT32
UINT64 UInt64 UINT64
INT64 Int64 INT64
FLOAT,HALF_FLOAT Float32 FLOAT
DOUBLE Float64 DOUBLE
DATE32 Date UINT16
DATE64,TIMESTAMP DateTime UINT32
STRING,BINARY String STRING
— FixedString STRING
DECIMAL Decimal DECIMAL
不支持的Parquet數據類型:DATE32, TIME32, FIXED_SIZE_BINARY, JSON, UUID, ENUM。
注意:ClickHouse表的列名必須與Parquet表的列名一致。
ClickHouse表的列數據類型可以不同于插入的Parquet數據類型。在插入數據時, ClickHouse根據上表解釋數據類型,然后將數據類型轉換為ClickHouse表的列數據類型。
數據的導出:
clickhouse-client --query="SELECT * FROM tsv_demo FORMAT Parquet" > parquet_demo.parquet數據導入:
create table parquet_demo (srcip String, destip String, time String) ENGINE=TinyLog; cat parquet_demo.parquet | clickhouse-client --query="INSERT INTO parquet_demo FORMAT Parquet"6 ORC
僅支持ORC格式的寫入
ORC和CH數據類型的匹配關系:
ORC data type (INSERT)|ClickHouse data type
UINT8, BOOL UInt8
INT8 Int8
UINT16 UInt16
INT16 Int16
UINT32 UInt32
INT32 Int32
UINT64 UInt64
INT64 Int64
FLOAT, HALF_FLOAT Float32
DOUBLE Float64
DATE32 Date
DATE64, TIMESTAMP DateTime
STRING, BINARY String
DECIMAL Decimal
不支持的ORC數據類型:DATE32,TIME32,FIXED_SIZE_BINARY,JSON,UUID,ENUM。
Not: ClientHouse表的列名必須與ORC表的列名一致。
測試表:
create table orc_demo (srcip String, destip String, time DateTime) ENGINE=TinyLog;數據導入:
cat file.orc | clickhouse-client --query="INSERT INTO orc_demo FORMAT ORC"7 其它常見的數據格式
7.1 Native
數據以二進制數據塊的方式進行讀寫。
數據的導出:
數據的導出:
clickhouse-client --query="insert into tsv_demo FORMAT Native" < a.native再如:
xxxxx :) show tables;SHOW TABLES┌─name──────────────┐ │ TabSeparated_demo │ │ test │ └───────────────────┘2 rows in set. Elapsed: 0.006 sec. xxxxx :) select * from TabSeparated_demo FORMAT Native;SELECT * FROM TabSeparated_demo FORMAT NativeWatchIDUInt64y,kQ?aaf D? 8w[ᅫ?8S9?D:2§~?O?3]A!5OLμ|W?/H¥?=( b?{ JavaEnableUInt8TitleStringjвышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силваjвышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силваjвышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силваjвышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силваjвышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силваjвышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силваjвышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силв.RegionIDUInt32?66666666UserIDUInt64??ˉ&wP鑰?P鑰?P鑰?P鑰?P鑰?P鑰?P鑰?P鑰?P鑰?y EventDateDate?????????? CounterIDUInt329999999999 10 rows in set. Elapsed: 0.010 sec. xxxxx :)7.2 Null
主要用于測試性能。 查詢會被處理,并且數據會被傳送到客戶端,但是什么也不輸出。
Null格式只能用于查詢,不能用于數據的導入。
7.3 Pretty
PrettyCompact : 在交互式模式下,默認的數據顯示格式。
PrettySpace
7.4 Values
每行之間使用逗號分隔,列之間也是使用逗號分隔。在括號中打印每一行。
INSERT INTO XX values
INSERT INTO XX FORMAT Values;
insert into tsv_demo FORMAT Values (‘115.248.158.231’, ‘115.248.158.232’, ‘2020-07-12 17:22:56’), (‘115.248.158.231’, ‘115.248.158.232’, ‘2020-07-12 17:22:56’);
7.5 Vertical
數據以垂直的格式進行展示。\G
xxxxx :) select * from TabSeparated_demo FORMAT Vertical;SELECT * FROM TabSeparated_demo FORMAT VerticalRow 1: ────── WatchID: 7043438415214026105 JavaEnable: 1 Title: RegionID: 14050 UserID: 8585742290196126178 EventDate: 2014-03-17 CounterID: 57Row 2: ────── WatchID: 4944118417295196513 JavaEnable: 1 Title: вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 57Row 3: ────── WatchID: 4675118455796596620 JavaEnable: 1 Title: вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 57Row 4: ────── WatchID: 5996666368919599438 JavaEnable: 1 Title: вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 57Row 5: ────── WatchID: 4907059686366943622 JavaEnable: 1 Title: RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 57Row 6: ────── WatchID: 9126318258181481721 JavaEnable: 1 Title: вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 57Row 7: ────── WatchID: 4710091431795314620 JavaEnable: 1 Title: вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 57Row 8: ────── WatchID: 8986102154348410145 JavaEnable: 1 Title: RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 57Row 9: ─────── WatchID: 8632456315223530327 JavaEnable: 1 Title: вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 57Row 10: ─────── WatchID: 8894287528226995594 JavaEnable: 1 Title: вышивка в Москве - Образовать фото мочия - Почта Mail.Ru: Силва RegionID: 54 UserID: 610708775678702928 EventDate: 2014-03-17 CounterID: 5710 rows in set. Elapsed: 0.007 sec. xxxxx :)7.6 XML
只支持數據的查看。
SELECT * from tsv_demo limit 2 FORMAT XML;
總結
以上是生活随笔為你收集整理的03_ClickHouse数据格式,TabSeparated、TSKV、CSV格式、JSON格式、Parquet、ORC、其它数据格式(Native,Pretty,Values,Vertical等)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 02_clickhouse安装,卸载,启
- 下一篇: 1.25倍行距是多倍行距吗(1 25倍行