/install kwdb-text2sql-aiot
KWDB Text-to-SQL Skill
Query Type Routing
Based on the user's query, read the appropriate reference file:
| Query Type | Reference File |
|---|---|
| Query routing (start here) | references/scenarios.md |
| MCP integration | references/mcp-integration.md |
| 时序DDL (创建时序库/表) | references/ts-ddl.md |
| 聚合操作及降采样 (每小时/每天统计) | references/ts-downsampling.md |
| 插值/填充缺失值 | references/ts-interpolation.md |
| 最新值查询 | references/ts-latest-value.md |
| 滑动窗口/session/event | references/ts-window-events.md |
| 关系表查询 | references/relational.md |
| 跨模查询(时序表+关系表) | references/cross-model.md |
| 时序函数语法速查 | references/ts-functions.md |
| 关系函数语法速查 | references/relational-functions.md |
Quick Reference
| NL Pattern | SQL Pattern |
|---|---|
| 最近N分钟/小时/天的数据 | WHERE ts >= NOW() - INTERVAL 'N hour' |
| 每小时/每天的平均值 | time_bucket(ts, '1h/1d') + avg(col) |
| 每N分钟/小时/天降采样 | time_bucket(ts, 'X') + aggregation |
| 填充缺失值 | time_bucket_gapfill() + interpolate() |
| 最新数据 | last(col) or ORDER BY ts DESC LIMIT 1 |
| 滑动窗口 | TIME_WINDOW(ts, '1h', '15m') |
| 关联设备信息 | JOIN devices ON ... |
Workflow
Phase 0: MCP Detection & Schema Discovery (Recommended)
-
Detect MCP availability: Call
read-querywithSELECT 1- If successful → MCP is available
- If failed → MCP is unavailable, proceed to fallback
-
Get database name (if not provided by user):
- Ask user: "请提供要查询的数据库名称"
- Or execute
SHOW DATABASESto list all databases
-
Discover tables in database: Execute
SHOW TABLES FROM {database_name} -
Identify candidate tables:
- Match NL keywords to table names (e.g., "传感器" → sensor_data)
- If multiple candidates → ask user: "请确认表名: [A, B, C]?"
-
Get table schema: Execute
SHOW CREATE TABLE {database_name}.{table_name}, do not useDESCRIBE- Note column names, types, primary key, tags, comments
- Map NL field names to actual column names
-
Proceed to Phase 1 with verified schema
Phase 0 Fallback: No MCP Available
When MCP is unavailable:
-
Option A - Ask user: "请提供表结构信息(表名、列名)"
- Wait for user to describe the schema
- Proceed to Phase 1
-
Option B - Use assumed fields: "我将使用常见字段名生成 SQL,请验证"
- Use standard field names (ts, device_id, temperature, etc.)
- Mark output as "ASSUMED SCHEMA - please verify"
-
Proceed to Phase 1
Phase 1: Query Type Routing
- Read scenarios.md:
references/scenarios.md- single entry point with decision tree - Route to scenario file based on query type:
- aggregation/downsampling →
ts-downsampling.md - interpolation →
ts-interpolation.md - latest value →
ts-latest-value.md - window/session/event →
ts-window-events.md - cross-model →
cross-model.md - relational →
relational.md
- aggregation/downsampling →
- Function syntax → see
ts-functions.md(time-series) orrelational-functions.md(relational)
Phase 2: SQL Generation
- Extract entities: Table name, columns, time range, conditions
- Use schema from Phase 0 (if MCP was used)
- Generate SQL: Use patterns from reference to construct SQL
- Validate: Ensure SQL follows KWDB function syntax
Phase 3: Output
- Format output: Follow
assets/output-template.md - Include field mapping if MCP was used
- Mark assumptions if schema was assumed
- Add verification checklist
Phase 4: KWDB Execute
Prerequisite: SQL has been generated in Phase 2 and formatted in Phase 3.
Step 1: Check MCP Availability
Note: If MCP was successfully used in Phase 0 and schema was discovered, MCP is available. If Phase 0 indicated MCP was unavailable, skip this phase entirely.
If MCP availability is unknown (e.g., Phase 0 was skipped), verify now:
- Call
read-querywithSELECT 1 - If successful → MCP is available, proceed to Step 2
- If failed → MCP is unavailable, skip this phase entirely and end workflow
Step 2: Ask User for Execution Confirmation
Prompt user:
生成的 SQL 已准备就绪。是否需要通过 kwdb-mcp-server 执行该 SQL?
- 输入 "是" 或 "执行" → 继续执行
- 输入 "否" 或 "跳过" → 结束,不再执行
If user declines → end workflow.
Step 3: Determine Query Type
Analyze the generated SQL:
- Read query: SELECT, SHOW, EXPLAIN → use
read-query - Write query: INSERT, UPDATE, DELETE, CREATE, DROP, ALTER → use
write-query
Step 4: Execute Query
Call the appropriate MCP tool:
For read queries (read-query):
{
"sql": "\x3Cgenerated SQL>"
}
For write queries (write-query):
{
"sql": "\x3Cgenerated SQL>"
}
Step 5: Handle Execution Result
On Success: Report to user:
## Execution Result
- Status: success
- Query Type: read / write
- Row Count: N
- Auto-Limited: true/false
### Results
[formatted table if applicable]
On Failure:
- Parse the error message to identify error type (see Error Type table in Error Handling section below)
- If error indicates SQL generation issue (wrong table name, wrong column, syntax error):
- Explain to user: "SQL 执行失败,正在分析错误原因..."
- Report the error and analysis:
## Execution Result - Status: failed - Error: [error message] - Analysis: [cause analysis] - Return to Phase 1 with error context to regenerate SQL
- If error indicates user data issue (constraint violation, permission issue, etc.):
- Report the error and suggest fixes, but do not auto-regenerate
Reference Files
references/scenarios.md- Query routing entry point (decision tree)references/mcp-integration.md- How to use kwdb-mcp-server for schema discoveryreferences/ts-ddl.md- Time series DDL (CREATE DATABASE/TABLE with TAGS)references/ts-downsampling.md- time_bucket for fixed-interval downsamplingreferences/ts-interpolation.md- time_bucket_gapfill + interpolate for gap fillingreferences/ts-latest-value.md- first/last/last_row for latest value queriesreferences/ts-window-events.md- TIME_WINDOW, SESSION_WINDOW, EVENT_WINDOW, TWA, diffreferences/relational.md- Standard SQL for relational tablesreferences/cross-model.md- JOIN between relational and time seriesreferences/ts-functions.md- KWDB time-series function syntax referencereferences/relational-functions.md- KWDB relational function syntax reference
Guardrails
- Always verify table existence when MCP is available
- Confirm column names match actual schema before generating SQL
- Ask for time range if user doesn't specify
- Add LIMIT clause for queries without one (MCP auto-adds LIMIT 20, but you should be explicit)
- Mark assumed schema when MCP is unavailable
- Handle ambiguous NL by asking clarifying questions
Error Handling (Authoritative Reference)
This Error Type table is used by:
- Phase 4 Step 5 when SQL execution fails
- When user reports that generated SQL failed
When a user reports that generated SQL failed, diagnose and regenerate:
| Error Type | Likely Cause | Fix |
|---|---|---|
relation "xxx" does not exist |
Wrong table name | Ask user to confirm table name, re-discover via MCP |
column "xxx" not found |
Wrong column name | Use MCP to re-read schema, update field mapping |
syntax error |
SQL syntax issue | Review KWDB SQL syntax, check function parameter order |
invalid interval |
Wrong interval format | Use format like '1h', '1d', '5m' — not复合格式 like '1d1h' |
| Overflow / out of range | Aggregation result too large | Add filters to reduce result set size |
ambiguous column reference |
Column name exists in both joined tables | Use fully-qualified column names (table.column) |
permission denied |
No write permission | Report to user, do not regenerate |
duplicate key |
Constraint violation | Report to user, do not regenerate |
When SQL fails:
- Read the error message to identify the error type
- If schema issue → re-run MCP discovery
- If syntax issue → check
ts-functions.mdorrelational-functions.mdand relevant reference file - If data issue → ask user for clarification
- Regenerate corrected SQL with explanation
Schema Discovery via MCP
Use read-query tool to execute SHOW commands:
| SQL Command | Purpose |
|---|---|
SHOW DATABASES |
List all databases |
SHOW TABLES FROM {database_name} |
List all tables in a database |
SHOW CREATE TABLE {database_name}.{table_name} |
Get table structure (columns, types, tags, comments) |
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install kwdb-text2sql-aiot - 安装完成后,直接呼叫该 Skill 的名称或使用
/kwdb-text2sql-aiot触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
KWDB Text-to-SQL 是什么?
Convert natural language queries to KWDB SQL for time series data, relational data and cross-model analysis. Use this skill whenever users ask to query KWDB... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 56 次。
如何安装 KWDB Text-to-SQL?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install kwdb-text2sql-aiot」即可一键安装,无需额外配置。
KWDB Text-to-SQL 是免费的吗?
是的,KWDB Text-to-SQL 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
KWDB Text-to-SQL 支持哪些平台?
KWDB Text-to-SQL 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 KWDB Text-to-SQL?
由 KWDB(@kwdb)开发并维护,当前版本 v1.0.0。