sql agent
This commit is contained in:
Executable
+87
@@ -0,0 +1,87 @@
|
||||
#!/bin/bash
|
||||
# SQL Agent 数据库连接辅助脚本 (via docker exec)
|
||||
# 用法:
|
||||
# ./sql-helper.sh psql [SQL] # PostgreSQL 交互/查询
|
||||
# ./sql-helper.sh mysql [SQL] # MySQL 交互/查询
|
||||
# ./sql-helper.sh schema-pg # PostgreSQL 所有表
|
||||
# ./sql-helper.sh schema-mysql # MySQL 所有表
|
||||
# ./sql-helper.sh analyze-pg # PostgreSQL 索引分析
|
||||
# ./sql-helper.sh analyze-mysql # MySQL 查询分析
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# 密码从 .env 文件通过环境变量传入
|
||||
# PGPASSWORD 和 MYSQL_PWD_SQL 需在调用前已 export
|
||||
|
||||
case "${1:-help}" in
|
||||
psql)
|
||||
shift 2>/dev/null || true
|
||||
if [ $# -ge 1 ]; then
|
||||
docker exec -e PGPASSWORD="$PGPASSWORD" postgres psql -U openclaw -d openclaw -c "$1" -t 2>&1
|
||||
else
|
||||
docker exec -e PGPASSWORD="$PGPASSWORD" -it postgres psql -U openclaw -d openclaw 2>&1
|
||||
fi
|
||||
;;
|
||||
mysql)
|
||||
shift 2>/dev/null || true
|
||||
if [ $# -ge 1 ]; then
|
||||
docker exec mysql mysql -u openclaw -p"$MYSQL_PWD_SQL" openclaw -e "$1" -t 2>&1
|
||||
else
|
||||
docker exec -it mysql mysql -u openclaw -p"$MYSQL_PWD_SQL" openclaw 2>&1
|
||||
fi
|
||||
;;
|
||||
schema-pg)
|
||||
echo "=== PostgreSQL 表列表 ==="
|
||||
docker exec -e PGPASSWORD="$PGPASSWORD" postgres psql -U openclaw -d openclaw -c "
|
||||
SELECT table_schema, table_name, table_type
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema NOT IN ('pg_catalog','information_schema')
|
||||
ORDER BY table_schema, table_name;
|
||||
" -t 2>&1
|
||||
;;
|
||||
schema-mysql)
|
||||
echo "=== MySQL 表列表 ==="
|
||||
docker exec mysql mysql -u openclaw -p"$MYSQL_PWD_SQL" openclaw -e "
|
||||
SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
|
||||
FROM information_schema.tables
|
||||
WHERE TABLE_SCHEMA = 'openclaw'
|
||||
ORDER BY TABLE_NAME;
|
||||
" -t 2>&1
|
||||
;;
|
||||
analyze-pg)
|
||||
echo "=== PostgreSQL 索引使用分析 ==="
|
||||
docker exec -e PGPASSWORD="$PGPASSWORD" postgres psql -U openclaw -d openclaw -c "
|
||||
SELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch
|
||||
FROM pg_stat_user_indexes
|
||||
ORDER BY idx_scan DESC LIMIT 20;
|
||||
" -t 2>&1
|
||||
;;
|
||||
analyze-mysql)
|
||||
echo "=== MySQL EXPLAIN 经典语句 ==="
|
||||
docker exec mysql mysql -u openclaw -p"$MYSQL_PWD_SQL" openclaw -e "
|
||||
SELECT DIGEST_TEXT, COUNT_STAR, SUM_ROWS_EXAMINED, SUM_NO_INDEX_USED
|
||||
FROM performance_schema.events_statements_summary_by_digest
|
||||
WHERE SUM_NO_INDEX_USED > 0
|
||||
ORDER BY COUNT_STAR DESC LIMIT 10;
|
||||
" -t 2>&1 || echo "performance_schema 可能需要额外配置"
|
||||
;;
|
||||
test)
|
||||
echo "=== PostgreSQL 连接测试 ==="
|
||||
docker exec -e PGPASSWORD="$PGPASSWORD" postgres psql -U openclaw -d openclaw -c "SELECT current_database() AS db, version();" -t 2>&1
|
||||
echo ""
|
||||
echo "=== MySQL 连接测试 ==="
|
||||
docker exec mysql mysql -u openclaw -p"$MYSQL_PWD_SQL" openclaw -e "SELECT database() AS db, version();" -t 2>&1
|
||||
;;
|
||||
*)
|
||||
echo "SQL Agent 数据库辅助脚本 (via docker exec)"
|
||||
echo ""
|
||||
echo "用法:"
|
||||
echo " ./sql-helper.sh psql [SQL] # PostgreSQL 交互/查询"
|
||||
echo " ./sql-helper.sh mysql [SQL] # MySQL 交互/查询"
|
||||
echo " ./sql-helper.sh schema-pg # PostgreSQL 所有表"
|
||||
echo " ./sql-helper.sh schema-mysql # MySQL 所有表"
|
||||
echo " ./sql-helper.sh analyze-pg # PostgreSQL 索引分析"
|
||||
echo " ./sql-helper.sh analyze-mysql # MySQL 查询分析"
|
||||
echo " ./sql-helper.sh test # 测试连接"
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user