Sql Buddy

Data & APIs

Convert natural language to SQL, explore database schemas, execute queries safely, and get optimization suggestions.

Install

openclaw skills install sql-buddy

SQL Buddy Skill

Convert natural language questions into SQL queries, explore database schemas, execute queries safely, and receive optimization advice. Supports SQLite, PostgreSQL, MySQL, and SQL Server.

Core Capabilities

  • NL → SQL: Translate Chinese/English descriptions into correct SQL
  • Schema Exploration: Auto-discover tables, columns, types, and relationships
  • Safe Execution: Read-only by default; DDL/DML requires explicit --allow-write
  • Query Optimization: EXPLAIN plan analysis, index suggestions, performance warnings
  • Result Insight: AI interpretation of query results (trends, anomalies)
  • Multi-Dialect: SQLite / PostgreSQL / MySQL / MSSQL (⚠ MSSQL driver is a stub — requires pymssql)

Security & Privacy

  • Default readonly: true — all non-SELECT statements are intercepted
  • Passwords never written to logs or history
  • Connection configs stored locally at ~/.openclaw/data/sql-buddy/connections.json
  • LLM only receives table/column names and types, never actual row data
  • Sensitive column names (password_hash, secret, token) are masked in schema context
  • All user SQL parameters use parameterized queries (prepared statements)

Usage

clawhub run sql-buddy --query "<natural language>" --connection <connection-string> [options]

Options

OptionTypeDefaultDescription
--querystringrequiredNatural language query (2-2000 chars)
--connectionstringsqlite://./temp.dbConnection string or JSON config
--executeboolfalseExecute the generated SQL
--explainbooltrueShow EXPLAIN plan
--suggest-indexesbooltrueSuggest indexes
--limit-rowsint20Max rows to display
--output-formatenumtabletable, json, csv, markdown
--show-schemaboolfalseShow database schema first
--direct-sqlstringSkip NL→SQL, just analyze/optimize given SQL
--allow-writeboolfalseAllow INSERT/UPDATE/DELETE execution
--languageenumzh-CNzh-CN, en-US

Connection Format

sqlite:///path/to/database.db
postgresql://user:pass@host:5432/dbname
mysql://user:pass@host:3306/dbname
mssql://user:pass@host:1433/dbname

Or use environment variables: DATABASE_URL / DB_PASSWORD.

Sample Prompts

1. Simple aggregating query (zero-config SQLite)

clawhub run sql-buddy --query "最近7天注册了多少用户" \
  --connection sqlite://./app.db --execute
# → Generated SQL: SELECT COUNT(*) as new_users FROM users WHERE created_at >= DATE('now', '-7 days')
# → Result: 847 new users

2. Complex JOIN query

clawhub run sql-buddy --query "每个品类上个月的销售额,按金额从高到低排序,同时显示商品数量" \
  --connection postgresql://localhost:5432/shop --execute
# → Multi-table JOIN with GROUP BY, ORDER BY, window functions

3. SQL optimization analysis

clawhub run sql-buddy --direct-sql "SELECT * FROM orders JOIN users ON orders.user_id = users.id WHERE users.status = 'active'" \
  --explain --suggest-indexes
# → Full scan warning, index suggestions, optimized SQL rewrite

4. Schema exploration

clawhub run sql-buddy --connection postgresql://localhost:5432/shop --show-schema
# → All tables with their columns, types, PKs, FKs, and comment hints

5. Billing analysis with result insight

clawhub run sql-buddy --query "本月各区域销售额对比" \
  --connection postgresql://localhost:5432/shop --execute
# → SQL + results + AI insight: "华东区销售额环比下降15%,建议关注..."

First-Success Path

Step 1: Install → clawhub install sql-buddy
Step 2: Connect to SQLite → clawhub run sql-buddy --query "有哪些表" --connection sqlite://./test.db
Step 3: See schema → auto-generated
Step 4: Query → clawhub run sql-buddy --query "每种状态有多少用户" --connection sqlite://./test.db --execute
Step 5: See aggregated result → "原来不用写SQL也能查数据!"

Core Scripts

FilePurpose
scripts/__init__.pyPackage init
scripts/nl_parser.pyNatural language → query intent extraction
scripts/schema_explorer.pySchema discovery (tables, columns, FKs)
scripts/sql_generator.pyAI SQL generation with few-shot prompts
scripts/sql_validator.pySyntax validation + dialect adaptation
scripts/optimizer.pyExecution plan analysis + index suggestions
scripts/executor.pySafe query executor (read-only by default)
scripts/connection_manager.pyConnection pool + credential management
scripts/result_formatter.pyFormat results as table / JSON / CSV
scripts/insight_generator.pyAI result interpretation
scripts/security.pyPassword masking, SQL injection prevention
scripts/drivers/Per-dialect driver adapters