1 匯入文本檔案
建表
# 本地表
CREATE TABLE test.tmp_uid_info
(
`uid` Int32,
`alias` Int32,
`sex` String,
`totalDate` Date,
`source` String,
`name` String
)
ENGINE = ReplicatedMergeTree('/clickhouse/activity/tables/{shard}/tmp_uid_info', '{replica}')
PARTITION BY totalDate
ORDER BY uid
SETTINGS index_granularity = 8192;
# 創建分布式表
CREATE TABLE test.tmp_uid_info_all
(
`uid` Int32,
`alias` Int32,
`sex` String,
`totalDate` Date,
`source` String,
`name` String
)
ENGINE = Distributed('ck_cluster', 'test', 'tmp_uid_info', sipHash64(uid));
uid_info.txt文本檔案:
2150 2105 0 2018-10-27 00-00-00 a
2147 2147 0 2018-10-27 00-00-00 b
2161 2161 0 2019-10-27 00-00-00 c
2161 2161 0 2019-10-27 00-00-00 d
2160 2160 0 2019-10-27 00-00-00 e
匯入資料命令,寫入一個分片即可,測驗文本無頭列欄位,格式采用TabSeparated
cat uid_info.txt | clickhouse-client --query="INSERT INTO test.tmp_uid_info FORMAT TabSeparated"
查詢分布式表
SELECT *
FROM tmp_uid_info_all
┌──uid─┬─alias─┬─sex─┬──totalDate─┬─source───┬─name─┐
│ 2160 │ 2160 │ 0 │ 2019-10-27 │ 00-00-00 │ e │
│ 2161 │ 2161 │ 0 │ 2019-10-27 │ 00-00-00 │ c │
│ 2161 │ 2161 │ 0 │ 2019-10-27 │ 00-00-00 │ d │
└──────┴───────┴─────┴────────────┴──────────┴──────┘
┌──uid─┬─alias─┬─sex─┬──totalDate─┬─source───┬─name─┐
│ 2147 │ 2147 │ 0 │ 2018-10-27 │ 00-00-00 │ b │
│ 2150 │ 2105 │ 0 │ 2018-10-27 │ 00-00-00 │ a │
└──────┴───────┴─────┴────────────┴──────────┴──────┘
此處要注意的是文本的格式:
- TabSeparated :| 資料按行寫入,每行包含由制表符分隔的值,每個值后跟一個制表符,除了行中最后一個值后跟換行,在任何地方都采用嚴格的Unix換行,最后一行還必須在末尾包含換行,值以文本格式撰寫,不包含引號,并使用轉義的特殊字符,需要對tab、換行符、反斜線進行轉義處理,分別對應為:\t, \n, \, NULL值使用\N進行表示,
- TabSeparatedWithNames :與TabSeparated類似,區別是第一行是列名,決議時,第一行會被忽略,因此不能夠使用第一行列名來決定列的位置,
2 匯入csv檔案
將測驗資料匯出成csv檔案:
clickhouse-client --query="select * from test.tmp_uid_info FORMAT CSV" > uid_info.csv
cat uid_info.csv就可以看到如下文本
2160,2160,"0","2019-10-27","00-00-00","e"
2161,2161,"0","2019-10-27","00-00-00","c"
2161,2161,"0","2019-10-27","00-00-00","d"
2147,2147,"0","2018-10-27","00-00-00","b"
2150,2105,"0","2018-10-27","00-00-00","a"
# truncase est.tmp_uid_info 清除tmp_uid_info表的所有資料
# 將uid_info.csv的檔案資料匯入到clickhouse中
cat uid_info.csv | clickhouse-client --query="INSERT INTO test.tmp_uid_info FORMAT CSV"
此處要注意的是csv的格式:
- CSV :資料按行寫入檔案中,默認使用逗號進行列與列之間的分割,字串型別使用雙引號括起來,字串的雙引號本身使用兩個雙引號進行轉義,數值型別不使用雙引號,如果列與列之間使用豎線分割,可以使用–format_csv_delimiter指定其他列分隔符,例如cat uid_info.csv | clickhouse-client --format_csv_delimiter="|" --query=“INSERT INTO test.tmp_uid_info FORMAT CSV”
- CSVWithNames :與CSV類似,第一行表示列名,決議時,第一行會被直接忽略,
參考文章: clickhouse 官方檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/251712.html
標籤:其他
上一篇:寒假學習——ES6(2)
