ClickHouse 之 clickhouse-client 和 clickhouse-local 命令

clickhouse-client 交互式执行
使用方法,直接运行 clickhouse-client 命令
导入数据范例:
cat /tmp/test_fetch.tsv | clickhouse-client --query "INSERT INTO test_fetch FORMAT TSV"


导出数据范例:
clickhouse-client --query "SELECT * FROM test_fetch" > /tmp/test_fetch.tsv 


通过交互式 clickhouse-client 运行的SQL语句,会被记录到如下文件:
~/.clickhouse-client-history


clickhouse-client 非交互式执行
默认情况下,clickhouse-client 命令一次只能运行一条SQL语句
如果要运行多条语句,使用 --multiquery 参数,范例如下
clickhouse-client -h 127.0.0.1 --multiquery --query="SELECT 1;SELECT 2;SELECT 3"


clickhouse-client 常用参数
--host/-h 服务端地址,默认值为 localhost 。可修改 config.xm 中的 listen_host 改变默认值。
--port  服务端TCP端口,默认值为 9000。可修改 config.xm 中的 tcp_port 改变默认值。
--user/-u  登录的用户名,默认值为 default 。
--password 登录的密码,默认值为空。
--database/-d 登录的数据库,默认值为 default 。
--query/-q  只能在非交互式查询使用,用于指定SQL语句。
--multiquery/-n  在非交互式执行时,允许一次执行多条SQL语句。
--time/-t  在非交互式执行,会打印每条SQL的执行时间。



clickhouse-local
clickhouse-local 是非交互式运行的,只能够使用File引擎。每次执行都需要指定数据来源,直接读取本地的文件或者借助操作系统命令进行查询,不用部署clickhouse-server。
范例:直接读取本地的文件进行查询
[root@testdb62 ~]# cat test.txt 
"ZheJiang","HangZhou"
"JiangSu","NanJIng"
"GuangDong","GuangZhou"
[root@testdb62 ~]# clickhouse-local -N test_table  --file='test.txt' --input-format=CSV -S "province String, city String" -q "SELECT * from test_table FORMAT Pretty"
┏━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ province  ┃ city      ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━┩
│ ZheJiang  │ HangZhou  │
├───────────┼───────────┤
│ JiangSu   │ NanJIng   │
├───────────┼───────────┤
│ GuangDong │ GuangZhou │
└───────────┴───────────┘


范例:通过操作系统命令,实现对系统用户内存用量的查询
[root@testdb62 ~]# ps aux | tail -n +2 | awk '{ printf("%s\t%s\n", $1, $4) }' | clickhouse-local -S "user String, mem Float64" -q "SELECT user, round(sum(mem), 2) as mem_total FROM table GROUP BY user ORDER BY mem_total DESC FORMAT PrettyCompact"
┌─user─────┬─mem_total─┐
│ mysql    │       8.7 │
│ clickho+ │       5.1 │
│ root     │       0.5 │
│ dbus     │         0 │
│ postfix  │         0 │
│ polkitd  │         0 │
│ chrony   │         0 │
└──────────┴───────────┘


clickhouse-local 常用参数说明
-S/--structure  表结构的简写方式,例如下面两种方式是相同的

使用-S简写
clickhouse-local -S "id Int64"

使用DDL
clickhouse-local -q "CREATE TABLE test_table (id Int64) ENGINE=File(CSV,stdin)"

-N/--table  表名称,默认值是table
范例: clickhouse-local -S "id Int64" -N "test_table" -q "SELECT id FROM test_table" 

-if/--input-format   输入数据的格式,默认值是TSV
范例: echo -e "1\n2\n3" | clickhouse-local -S "id Int64" -if "CSV"  -N "test_table"

-f/--file 输入数据的地址,默认值是stdin标准输入
-q/--query  待执行的SQL语句,多条语句直接以分号间隔

 

 

posted @ 2020-09-25 10:44  屠魔的少年  阅读(95)  评论(0)    收藏  举报