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 準(zhǔn)備表
3.1.2 準(zhǔn)備數(shù)據(jù)
3.1.3 導(dǎo)入csv格式的表
3.2 CSVWithNames
4 JSON系列格式
4.1 JSON
4.2 JSONCompact
4.3 JSONEachRow
5 Parquet
6 ORC
7 其它常見的數(shù)據(jù)格式
7.1 Native
7.2 Null
7.3 Pretty
7.4 Values
7.5 Vertical
7.6 XML
1、TabSeparated
這個(gè)系列的格式包括:TabSeparated、TabSeparatedRaw、TabSeparatedWithNames和TabSeparatedWithNamesAndTypes
特點(diǎn):
數(shù)據(jù)按行寫入,tab制表符分隔。使用嚴(yán)格Unix命令行。
默認(rèn)格式:
簡(jiǎn)寫:TSV
數(shù)據(jù)插入和數(shù)據(jù)查詢時(shí),均可使用。
1.1 TabSeparated
數(shù)據(jù)按行寫入,tab制表符分隔。使用嚴(yán)格Unix命令行。
注意:最后一行必須包含換行符。
默認(rèn)格式。
簡(jiǎn)寫:TSV
數(shù)據(jù)插入和數(shù)據(jù)查詢時(shí),均可使用。
使用clickhouse-client query的方式查詢10條結(jié)果,并將值存儲(chǔ)到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格式導(dǎo)入數(shù)據(jù)到表中
[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 :)導(dǎo)入數(shù)據(jù)到表中
[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 ~]#如果在導(dǎo)入過程中出現(xiàn)類似下面的錯(cuò)誤:
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給去掉。
轉(zhuǎn)換為UNIX格式:
[root@xxxxx ~]# yum install -y dos2unix; (在沒有dos2Unix的時(shí)候執(zhí)行) 已加載插件: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 正在解決依賴關(guān)系 --> 正在檢查事務(wù) ---> 軟件包 dos2unix.x86_64.0.6.0.3-7.el7 將被 安裝 --> 解決依賴關(guān)系完成依賴關(guān)系解決=======================================================================================================================================================================================================Package 架構(gòu) 版本 源 大小 ======================================================================================================================================================================================================= 正在安裝:dos2unix x86_64 6.0.3-7.el7 base 74 k事務(wù)概要 ======================================================================================================================================================================================================= 安裝 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 驗(yàn)證中 : 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
簡(jiǎn)稱:TSVRaw
TabSeparatedRaw格式不會(huì)對(duì)行數(shù)據(jù)進(jìn)行轉(zhuǎn)義,即不會(huì)將換行、制表符等轉(zhuǎn)換為轉(zhuǎn)義字符。
只能在數(shù)據(jù)查詢的時(shí)候使用。
建表語句:
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
在查詢時(shí),TabSeparatedWithNames格式的第一行顯示列的名稱
在數(shù)據(jù)導(dǎo)入時(shí),第一行完全被忽略,不會(huì)解析第一行為表頭。
簡(jiǎn)稱:TSVWithNames
在數(shù)據(jù)查詢和數(shù)據(jù)導(dǎo)入均可使用。
數(shù)據(jù)導(dǎo)入:
clickhouse-client --query="INSERT INTO escape_demo FORMAT TSVWithNames" < escape_demo.tsv數(shù)據(jù)查詢:
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## 注意下面的第一行數(shù)據(jù),這一行數(shù)據(jù)是表頭。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
在查詢時(shí),TabSeparatedWithNamesAndTypes格式在主數(shù)據(jù)的前面額外顯示兩行數(shù)據(jù),第一行顯示列的名稱, 第二行顯示列的數(shù)據(jù)類型。
在數(shù)據(jù)導(dǎo)入時(shí),前面兩行的數(shù)據(jù)完全被忽略。
簡(jiǎn)寫:TSVWithNamesAndTypes
在數(shù)據(jù)導(dǎo)入和查詢時(shí)均可使用。
2 TSKV
TSKV格式不適合有大量小列的輸出.
TSKV的效率并不比JSONEachRow差.
TSKV數(shù)據(jù)查詢和數(shù)據(jù)導(dǎo)入。
不需要保證列的順序。
支持忽略某些值,這些列使用默認(rèn)值,例如0和空白行。復(fù)雜類型的值必須指定,無法使用默認(rèn)值。
查看:
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 :)導(dǎo)出:
[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 :)導(dǎo)入:
clickhouse-client --query "insert into escape_demo FORMAT TSKV" < tskv.demo3 CSV格式:CSV、CSVWithNames
3.1 CSV格式
CSV默認(rèn)的分隔符為逗號(hào),format_csv_delimiter設(shè)置自定義的分隔符。
CSV中的雙引號(hào)使用兩個(gè)雙引號(hào)轉(zhuǎn)義。
支持?jǐn)?shù)據(jù)的查詢和數(shù)據(jù)導(dǎo)入。
3.1.1 準(zhǔn)備表
[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 準(zhǔn)備數(shù)據(jù)
[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 導(dǎo)入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 :)數(shù)據(jù)查看:
set format_csv_delimiter='|' select * from csv_demo FORMAT CSV;3.2 CSVWithNames
CSVWithNames會(huì)打印表頭的信息。
支持?jǐn)?shù)據(jù)的導(dǎo)入和數(shù)據(jù)的查看。
4 JSON系列格式
JSON系列的有JSON、JSONCompact和JSONEachRow
4.1 JSON
JSON格式只支持?jǐn)?shù)據(jù)的輸出,不支持?jǐn)?shù)據(jù)的解析(數(shù)據(jù)導(dǎo)入)。
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 :)默認(rèn)情況下,Int64和UInit64的整型使用雙引號(hào)包裹,如果要移除雙引號(hào),設(shè)置配置參數(shù)output_format_json_quote_64bit_integers為0
rows_before_limit_at_least : 只有查詢包含LIMIT時(shí)才輸出,只有在包含group by的語句中才有意義。當(dāng)查詢沒有LIMIT時(shí), 執(zhí)行結(jié)果的最小行數(shù)。
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格式的數(shù)據(jù)以對(duì)象的方式輸出, 而JSONCompact以數(shù)組的方式輸出。
JSONCompact只支持?jǐn)?shù)據(jù)的查看, 不支持?jǐn)?shù)據(jù)的導(dǎo)入。
4.3 JSONEachRow
每行數(shù)據(jù)以換行符分隔的JSON對(duì)象。
支持?jǐn)?shù)據(jù)的輸入和數(shù)據(jù)導(dǎo)入。
輸入導(dǎo)入:
對(duì)象中鍵值對(duì)的順序可任意排列。
可以缺失某些字段
缺失值的處理:
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 :)參數(shù):input_format_defaults_for_omitted_fields
如果為0,則x和a的默認(rèn)值等于0(即UInt32數(shù)據(jù)類型的默認(rèn)值)
如果為1,則x的默認(rèn)值等于0,但a的默認(rèn)值等于x+2.
上面的例子說明:
如果要將類似:{“n”: { “s”: [“aaa”, “bbb”],“i”: [2, 30]}} 這種分層JSON對(duì)象插入,需要設(shè)置input_format_import_nested_json=1。即執(zhí)行set input_format_import_nested_json=1;
對(duì)于ClickHouse,默認(rèn)input_format_import_nested_json=0。
5 Parquet
支持Parquet格式的導(dǎo)出和導(dǎo)入。
Parquet和ClickHouse類型的匹配關(guān)系:
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數(shù)據(jù)類型:DATE32, TIME32, FIXED_SIZE_BINARY, JSON, UUID, ENUM。
注意:ClickHouse表的列名必須與Parquet表的列名一致。
ClickHouse表的列數(shù)據(jù)類型可以不同于插入的Parquet數(shù)據(jù)類型。在插入數(shù)據(jù)時(shí), ClickHouse根據(jù)上表解釋數(shù)據(jù)類型,然后將數(shù)據(jù)類型轉(zhuǎn)換為ClickHouse表的列數(shù)據(jù)類型。
數(shù)據(jù)的導(dǎo)出:
clickhouse-client --query="SELECT * FROM tsv_demo FORMAT Parquet" > parquet_demo.parquet數(shù)據(jù)導(dǎo)入:
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數(shù)據(jù)類型的匹配關(guān)系:
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數(shù)據(jù)類型:DATE32,TIME32,FIXED_SIZE_BINARY,JSON,UUID,ENUM。
Not: ClientHouse表的列名必須與ORC表的列名一致。
測(cè)試表:
create table orc_demo (srcip String, destip String, time DateTime) ENGINE=TinyLog;數(shù)據(jù)導(dǎo)入:
cat file.orc | clickhouse-client --query="INSERT INTO orc_demo FORMAT ORC"7 其它常見的數(shù)據(jù)格式
7.1 Native
數(shù)據(jù)以二進(jìn)制數(shù)據(jù)塊的方式進(jìn)行讀寫。
數(shù)據(jù)的導(dǎo)出:
數(shù)據(jù)的導(dǎo)出:
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
主要用于測(cè)試性能。 查詢會(huì)被處理,并且數(shù)據(jù)會(huì)被傳送到客戶端,但是什么也不輸出。
Null格式只能用于查詢,不能用于數(shù)據(jù)的導(dǎo)入。
7.3 Pretty
PrettyCompact : 在交互式模式下,默認(rèn)的數(shù)據(jù)顯示格式。
PrettySpace
7.4 Values
每行之間使用逗號(hào)分隔,列之間也是使用逗號(hào)分隔。在括號(hào)中打印每一行。
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
數(shù)據(jù)以垂直的格式進(jìn)行展示。\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
只支持?jǐn)?shù)據(jù)的查看。
SELECT * from tsv_demo limit 2 FORMAT XML;
總結(jié)
以上是生活随笔為你收集整理的03_ClickHouse数据格式,TabSeparated、TSKV、CSV格式、JSON格式、Parquet、ORC、其它数据格式(Native,Pretty,Values,Vertical等)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 02_clickhouse安装,卸载,启
- 下一篇: SpringCloud动态获取yml文件