102 lines
2.5 KiB
Bash
Executable File
102 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# 文件名: ch-query.sh
|
|
# 用途: 执行ClickHouse SQL查询的便捷脚本
|
|
|
|
# 连接参数
|
|
CH_HOST="localhost"
|
|
CH_PORT="9000"
|
|
CH_USER="admin"
|
|
CH_PASSWORD="your_secure_password"
|
|
|
|
# 基本查询函数
|
|
function ch_query() {
|
|
clickhouse client --host $CH_HOST --port $CH_PORT --user $CH_USER --password $CH_PASSWORD -q "$1"
|
|
}
|
|
|
|
# 显示帮助信息
|
|
function show_help() {
|
|
echo "ClickHouse 查询工具"
|
|
echo "用法: $0 [选项] [SQL查询]"
|
|
echo ""
|
|
echo "选项:"
|
|
echo " -t 显示所有表"
|
|
echo " -d 显示所有数据库"
|
|
echo " -s <表名> 显示表结构"
|
|
echo " -p <表名> 显示表样本数据(前10行)"
|
|
echo " -c <表名> 计算表中的记录数"
|
|
echo " -h, --help 显示此帮助信息"
|
|
echo " -q \"SQL查询\" 执行自定义SQL查询"
|
|
echo " -f <文件名> 执行SQL文件"
|
|
echo ""
|
|
echo "示例:"
|
|
echo " $0 -d # 显示所有数据库"
|
|
echo " $0 -t # 显示所有表"
|
|
echo " $0 -s limq.link_events # 显示link_events表结构"
|
|
echo " $0 -q \"SELECT * FROM limq.link_events LIMIT 5\" # 执行自定义查询"
|
|
}
|
|
|
|
# 没有参数时显示帮助
|
|
if [ $# -eq 0 ]; then
|
|
show_help
|
|
exit 0
|
|
fi
|
|
|
|
# 处理命令行参数
|
|
case "$1" in
|
|
-t)
|
|
ch_query "SHOW TABLES"
|
|
;;
|
|
-d)
|
|
ch_query "SHOW DATABASES"
|
|
;;
|
|
-s)
|
|
if [ -z "$2" ]; then
|
|
echo "错误: 需要提供表名"
|
|
exit 1
|
|
fi
|
|
ch_query "DESCRIBE TABLE $2"
|
|
;;
|
|
-p)
|
|
if [ -z "$2" ]; then
|
|
echo "错误: 需要提供表名"
|
|
exit 1
|
|
fi
|
|
ch_query "SELECT * FROM $2 LIMIT 10"
|
|
;;
|
|
-c)
|
|
if [ -z "$2" ]; then
|
|
echo "错误: 需要提供表名"
|
|
exit 1
|
|
fi
|
|
ch_query "SELECT COUNT(*) FROM $2"
|
|
;;
|
|
-q)
|
|
if [ -z "$2" ]; then
|
|
echo "错误: 需要提供SQL查询"
|
|
exit 1
|
|
fi
|
|
ch_query "$2"
|
|
;;
|
|
-f)
|
|
if [ -z "$2" ]; then
|
|
echo "错误: 需要提供SQL文件"
|
|
exit 1
|
|
fi
|
|
if [ ! -f "$2" ]; then
|
|
echo "错误: 文件 '$2' 不存在"
|
|
exit 1
|
|
fi
|
|
SQL=$(cat "$2")
|
|
ch_query "$SQL"
|
|
;;
|
|
-h|--help)
|
|
show_help
|
|
;;
|
|
*)
|
|
echo "未知选项: $1"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
exit 0 |