/install civ6-adjacency-optimizer-sqlite-map-parser
SQLite to Structured JSON
Parse SQLite databases by exploring schemas first, then extracting data into structured JSON.
Step 1: Explore the Schema
Always start by understanding what tables exist and their structure.
List All Tables
SELECT name FROM sqlite_master WHERE type='table';
Inspect Table Schema
-- Get column names and types
PRAGMA table_info(TableName);
-- See CREATE statement
SELECT sql FROM sqlite_master WHERE name='TableName';
Find Primary/Unique Keys
-- Primary key info
PRAGMA table_info(TableName); -- 'pk' column shows primary key order
-- All indexes (includes unique constraints)
PRAGMA index_list(TableName);
-- Columns in an index
PRAGMA index_info(index_name);
Step 2: Understand Relationships
Identify Foreign Keys
PRAGMA foreign_key_list(TableName);
Common Patterns
ID-based joins: Tables often share an ID column
-- Main table has ID as primary key
-- Related tables reference it
SELECT m.*, r.ExtraData
FROM MainTable m
LEFT JOIN RelatedTable r ON m.ID = r.ID;
Coordinate-based keys: Spatial data often uses computed coordinates
# If ID represents a linear index into a grid:
x = id % width
y = id // width
Step 3: Extract and Transform
Basic Pattern
import sqlite3
import json
def parse_sqlite_to_json(db_path):
conn = sqlite3.connect(db_path)
conn.row_factory = sqlite3.Row # Access columns by name
cursor = conn.cursor()
# 1. Explore schema
cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
tables = [row[0] for row in cursor.fetchall()]
# 2. Get dimensions/metadata from config table
cursor.execute("SELECT * FROM MetadataTable LIMIT 1")
metadata = dict(cursor.fetchone())
# 3. Build indexed data structure
data = {}
cursor.execute("SELECT * FROM MainTable")
for row in cursor.fetchall():
key = row["ID"] # or compute: (row["X"], row["Y"])
data[key] = dict(row)
# 4. Join related data
cursor.execute("SELECT * FROM RelatedTable")
for row in cursor.fetchall():
key = row["ID"]
if key in data:
data[key]["extra_field"] = row["Value"]
conn.close()
return {"metadata": metadata, "items": list(data.values())}
Handle Missing Tables Gracefully
def safe_query(cursor, query):
try:
cursor.execute(query)
return cursor.fetchall()
except sqlite3.OperationalError:
return [] # Table doesn't exist
Step 4: Output as Structured JSON
Map/Dictionary Output
Use when items have natural unique keys:
{
"metadata": {"width": 44, "height": 26},
"tiles": {
"0,0": {"terrain": "GRASS", "feature": null},
"1,0": {"terrain": "PLAINS", "feature": "FOREST"},
"2,0": {"terrain": "COAST", "resource": "FISH"}
}
}
Array Output
Use when order matters or keys are simple integers:
{
"metadata": {"width": 44, "height": 26},
"tiles": [
{"x": 0, "y": 0, "terrain": "GRASS"},
{"x": 1, "y": 0, "terrain": "PLAINS", "feature": "FOREST"},
{"x": 2, "y": 0, "terrain": "COAST", "resource": "FISH"}
]
}
Common Schema Patterns
Grid/Map Data
- Main table: positions with base properties
- Feature tables: join on position ID for overlays
- Compute (x, y) from linear ID:
x = id % width, y = id // width
Hierarchical Data
- Parent table with primary key
- Child tables with foreign key reference
- Use LEFT JOIN to preserve all parents
Enum/Lookup Tables
- Type tables map codes to descriptions
- Join to get human-readable values
Debugging Tips
-- Sample data from any table
SELECT * FROM TableName LIMIT 5;
-- Count rows
SELECT COUNT(*) FROM TableName;
-- Find distinct values in a column
SELECT DISTINCT ColumnName FROM TableName;
-- Check for nulls
SELECT COUNT(*) FROM TableName WHERE ColumnName IS NULL;
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install civ6-adjacency-optimizer-sqlite-map-parser - 安装完成后,直接呼叫该 Skill 的名称或使用
/civ6-adjacency-optimizer-sqlite-map-parser触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
sqlite-map-parser 是什么?
Parse SQLite databases into structured JSON data. Use when exploring unknown database schemas, understanding table relationships, and extracting map data as... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 83 次。
如何安装 sqlite-map-parser?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install civ6-adjacency-optimizer-sqlite-map-parser」即可一键安装,无需额外配置。
sqlite-map-parser 是免费的吗?
是的,sqlite-map-parser 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
sqlite-map-parser 支持哪些平台?
sqlite-map-parser 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 sqlite-map-parser?
由 wu-uk(@wu-uk)开发并维护,当前版本 v0.1.0。