1. 查询正在运行的SQL
select * from system.processes;
也可以 show processlist 但不太方便过滤
- user - 执行查询的用户。对于分布式处理,查询会在default用户下发送到远程服务器。该字段是执行特定查询的用户名,而不是初始发起此查询的用户名。
- address - 发出请求的IP地址。
- elapsed - 请求执行时间,单位为秒。
- read_rows - 从表中读取的行数。对于分布式处理,在请求服务器上,这是所有远程服务器的总和。
- read_bytes - 从表中读取的未压缩字节数。对于分布式处理,在请求服务器上,这是所有远程服务器的总和。
- total_rows_approx - 应读取的总行数的近似值。对于分布式处理,在请求服务器上,这是所有远程服务器的总和。
- memory_usage - 请求使用的内存量。它可能不包括某些类型的专用内存,参见max_memory_usage设置。
- query - 查询文本。对于INSERT操作,它不包括要插入的数据。
- query_id - 查询ID。
- is_cancelled - 查询是否已取消。
- is_all_data_sent - 是否已将所有数据发送到客户端(查询在服务器上已完成)。
2. kill指定会话
其中query_id就来自上面的查询
kill query where query_id='xxxx';
3. 数据导出
- 导出为csv格式
clickhouse-client -h 127.0.0.1 --database="db" --format_csv_delimiter="," --query="select * from db.test_table FORMAT CSV" > test.csv (不带表头)
clickhouse-client -h 127.0.0.1 --database="db" --format_csv_delimiter="," --query="select * form db.test_table" --format CSVWithNames> test.csv(带表头)
4. 数据导入
- 导入csv格式数据
clickhouse-client -h 127.0.0.1 --database="db" --format_csv_delimiter="," --query="insert into db.test_table FORMAT CSV" < test.csv (不带表头)
clickhouse-client -h 127.0.0.1 --database="db" --format_csv_delimiter="," --query="insert into db.test_table" --format CSVWithNames < test.csv(带表头)
5. 批量创建DB及用户
#!/bin/sh
# 作用:生成创建DB及同名用户并授权语句
# 执行生产的创建语句脚本
# clickhouse-client --password --multiquery < clickhouse_add_db_and_user.sql
# 查看生成的用户密码
# cat clickhouse_add_db_and_user.sql |grep identified|awk '{print $3 $6}' | more
# 待创建创建库及用户(此处库与用户同名)
user_list=(a_rw b_rw c_rw d_rw e_rw f_rw g_rw h_rw i_rw)
logfile=clickhouse_add_db_and_user.sql
for user in ${user_list[@]}
do
# 以纳秒格式显示时间,长度为9位,作为随机密码的一部分
DATE=`date +'%N'`
echo -e "create database ${user} on cluster test_cluster;" >> $logfile
echo -e "create user ${user}@'%' identified by 'D9TUr3qJe!!!!LDVz8atn${DATE}' on cluster test_cluster;" >> $logfile
echo -e "grant all on ${user}.* to ${user} on cluster test_cluster;" >> $logfile
echo -e "grant select on ${user} to ${user} with grant option on cluster test_cluster;" >> $logfile
#role_db_metadata是自己建的角色,如果没有可以注释此句
echo -e "grant role_db_metadata to ${user} on cluster test_cluster;" >> $logfile
echo -e "\n\n" >> $logfile
done
参考
https://www.cnblogs.com/sxgsxg/p/13597582.html