关于 db
用于查询和管理 SQLite、PostgreSQL 与 MySQL 数据库的命令行技能。还涵盖架构检查、数据导出、查询审查和迁移流程。
主要功能
- 01查询三种数据库系统
- 02检查架构与索引
- 03查看查询计划
- 04将查询结果导出为 CSV
- 05审查 AI 生成的 SQL
- 06测试并执行数据库迁移
适用场景
- 01检查数据库架构
- 02导出查询结果以供分析
- 03检查查询执行计划
- 04在副本上测试架构迁移
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ johnlindquist/ claude --skill db安装后在 Claude Code 中输入/db确认已加载。
详细介绍
数据库管理器
跨 SQLite、PostgreSQL 和 MySQL 查询和管理数据库。
前置条件
按需安装数据库命令行工具:
# SQLite (usually pre-installed on macOS/Linux)
sqlite3 --version
# PostgreSQL
brew install postgresql
# or
apt install postgresql-client
# MySQL
brew install mysql-client
# or
apt install mysql-client
命令行参考
SQLite
# Connect to database
sqlite3 database.db
# Execute query
sqlite3 database.db "SELECT * FROM users LIMIT 10"
# Output as CSV
sqlite3 -csv database.db "SELECT * FROM users"
# Output as JSON (requires sqlite 3.33+)
sqlite3 -json database.db "SELECT * FROM users"
# Column headers
sqlite3 -header database.db "SELECT * FROM users"
# Execute SQL file
sqlite3 database.db < queries.sql
# Schema commands
sqlite3 database.db ".schema"
sqlite3 database.db ".tables"
sqlite3 database.db ".schema users"
PostgreSQL
# Connect
psql postgresql://user:pass@host:5432/dbname
# Execute query
psql -c "SELECT * FROM users LIMIT 10" postgresql://...
# Tuples only (no headers)
psql -t -c "SELECT count(*) FROM users" postgresql://...
# No alignment (machine-readable)
psql -t -A -c "SELECT id,name FROM users" postgresql://...
# Execute SQL file
psql -f queries.sql postgresql://...
# List tables
psql -c "\dt" postgresql://...
# Describe table
psql -c "\d users" postgresql://...
# Output format
psql -c "SELECT * FROM users" --csv postgresql://...
psql -c "SELECT * FROM users" --html postgresql://...
MySQL
# Connect
mysql -h host -u user -p dbname
# Execute query
mysql -h host -u user -p -e "SELECT * FROM users LIMIT 10" dbname
# Batch mode (no headers)
mysql -h host -u user -p -B -e "SELECT * FROM users" dbname
# Execute SQL file
mysql -h host -u user -p dbname < queries.sql
# Show tables
mysql -h host -u user -p -e "SHOW TABLES" dbname
# Describe table
mysql -h host -u user -p -e "DESCRIBE users" dbname
常见操作
架构检查
SQLite
# All tables
sqlite3 db.sqlite ".tables"
# Table schema
sqlite3 db.sqlite ".schema tablename"
# All schemas
sqlite3 db.sqlite ".schema"
PostgreSQL
# All tables
psql -c "\dt" $DATABASE_URL
# Table schema
psql -c "\d tablename" $DATABASE_URL
# Table with indexes
psql -c "\d+ tablename" $DATABASE_URL
MySQL
# All tables
mysql -e "SHOW TABLES" -h host -u user -p dbname
# Table schema
mysql -e "DESCRIBE tablename" -h host -u user -p dbname
# Create statement
mysql -e "SHOW CREATE TABLE tablename" -h host -u user -p dbname
查询解释
# SQLite
sqlite3 db.sqlite "EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = 'x'"
# PostgreSQL
psql -c "EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'x'" $DATABASE_URL
# MySQL
mysql -e "EXPLAIN SELECT * FROM users WHERE email = 'x'" dbname
数据导出
# SQLite to CSV
sqlite3 -csv -header db.sqlite "SELECT * FROM users" > users.csv
# PostgreSQL to CSV
psql -c "\COPY users TO 'users.csv' CSV HEADER" $DATABASE_URL
# MySQL to CSV
mysql -e "SELECT * FROM users" -B dbname | tr '\t' ',' > users.csv
AI 辅助查询生成
使用 Gemini 帮助编写查询:
# Describe what you want
gemini -m pro -o text -e "" "Write a SQL query to:
- Find all users who signed up in the last 30 days
- Who have made at least one purchase
- Order by purchase count descending
Table schemas:
- users (id, email, created_at)
- purchases (id, user_id, amount, created_at)
Output PostgreSQL-compatible SQL."
安全查询审查
# Generate query
QUERY=$(gemini -m pro -o text -e "" "Write SQL for: [your request]")
# Review before executing
echo "Generated query:"
echo "$QUERY"
# Then execute if safe
# psql -c "$QUERY" $DATABASE_URL
迁移模式
架构变更
# Create migration file
cat > migrations/001_add_column.sql << 'EOF'
ALTER TABLE users ADD COLUMN status VARCHAR(50) DEFAULT 'active';
EOF
# Apply migration
psql -f migrations/001_add_column.sql $DATABASE_URL
安全迁移工作流
# 1. Test on copy first
createdb test_migration
pg_dump $DATABASE_URL | psql test_migration
# 2. Run migration on test
psql -f migration.sql test_migration
# 3. Verify
psql -c "\d tablename" test_migration
# 4. Apply to production
psql -f migration.sql $DATABASE_URL
# 5. Cleanup
dropdb test_migration
环境变量
安全存储连接字符串:
# .env file (don't commit!)
DATABASE_URL=postgresql://user:pass@host:5432/dbname
SQLITE_DB=./data/app.db
# Usage
psql $DATABASE_URL
sqlite3 $SQLITE_DB
最佳实践
- 切勿硬编码凭据 - 使用环境变量
- 审查 AI 生成的查询 - 在执行之前
- 使用 EXPLAIN - 检查查询性能
- 测试迁移 - 在生产环境之前在副本上测试
- 变更前备份 - 尤其是破坏性变更
- 使用事务 - 用于多语句变更
- 限制结果 - 探索时始终使用 LIMIT
评论
支持 Markdown