ワンクリックで
shanxi-resilience-table-creator
陕交控项目一键建表工具 - 根据字段字典和示例数据,自动生成 DDL + DML + Python导入脚本三件套,并同步更新 docs/数据表说明.md
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
陕交控项目一键建表工具 - 根据字段字典和示例数据,自动生成 DDL + DML + Python导入脚本三件套,并同步更新 docs/数据表说明.md
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
陕交控项目专用路网路径查询工具 - 提供相邻节点查询、最短路径、Top N 替代路径、排除节点查询等功能,支持递归 CTE 和 pgRouting 两种实现方式
陕交控项目专用 pgRouting 路网优化工具 - 基于 PostgreSQL + PostGIS + pgRouting 构建高速路网拓扑,支持最短路径、Top N 路径、排除节点查询等高性能路径分析功能
陕交控项目专用数据导入工具 - 处理收费单元路径、收费站信息、收费路段等基础数据的Excel/CSV多版本导入,严格遵循数据字典,自动生成建表语句和导入脚本
陕交控项目专用文档更新工具 - 自动更新会话记录、业务逻辑记录、表口径总表等项目文档,保持文档与代码同步
陕交控项目专用 Git 操作管理 - 规范化的提交、分支管理、GitHub 协作流程,包含常用 Git 操作命令模板和最佳实践
陕交控项目批量处理并行化工具 - 将单进程 ETL/统计任务改造为多进程并行模式,含 CSV 分区读取、fork-safe DB、ON CONFLICT 累加、mini-batch 即时刷盘等完整模式
| name | shanxi-resilience-table-creator |
| description | 陕交控项目一键建表工具 - 根据字段字典和示例数据,自动生成 DDL + DML + Python导入脚本三件套,并同步更新 docs/数据表说明.md |
执行本 Skill 前,必须先阅读 docs/数据表说明.md,该文件是本项目所有数据库表的权威说明。新建表前必须确认:
version_yyyymm 而非 version_yyyyMM)docs/数据表说明.md禁止凭记忆假设已有表的字段名或类型,必须以 docs/数据表说明.md 中的数据字典为准。
用户提供以下任意形式的输入时自动激活:
从用户输入中提取:
id VARCHAR(20) PRIMARY KEYid SERIAL PRIMARY KEY + UNIQUE(...) 约束文件路径:sql/ddl/{layer}/create_{table_name}.sql
必须包含:
-- ============================================================
-- M{N}: Create {Layer} Table - {描述}
-- ============================================================
-- 作用: ...
-- 输入表: 无(手动配置)
-- 输出表: {table_name}
-- 粒度: 每条规则一行
-- 关键字段: {pk_fields}
-- ============================================================
CREATE TABLE IF NOT EXISTS {table_name} (
-- 主键
...
-- 业务字段
...
-- 元数据
remark TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
-- 约束
CONSTRAINT pk_{table_name} PRIMARY KEY (...),
CONSTRAINT chk_... CHECK (...)
);
CREATE INDEX IF NOT EXISTS idx_{abbr}_xxx ON {table_name}(...);
COMMENT ON TABLE {table_name} IS '...';
COMMENT ON COLUMN {table_name}.{col} IS '...';
PostgreSQL 类型映射:
float(8) → FLOAT8int(11) → INTEGERint(1) → INTEGER(配合 CHECK 约束)varchar(N) → VARCHAR(N)date → DATEDATE GENERATED ALWAYS AS (date_col + int_col) STORED文件路径:sql/dml/m{N}/insert_{table_name}.sql
-- ============================================================
-- M{N}: Insert Data - {描述}
-- ============================================================
-- 作用: ...
-- 输入表: 无
-- 输出表: {table_name}
-- ...
-- ============================================================
INSERT INTO {table_name} ({columns})
VALUES
(...),
(...)
ON CONFLICT ({pk_or_unique}) DO NOTHING;
冲突策略:
id 为 VARCHAR 主键 → ON CONFLICT (id) DO NOTHINGON CONFLICT ON CONSTRAINT uq_{table_name} DO NOTHING文件路径:scripts/import_{table_name}.py
固定结构(参考 scripts/import_toll_road.py):
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
{表描述}建表与数据导入脚本
"""
import sys
from pathlib import Path
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))
import psycopg
from psycopg.rows import dict_row
RULE_DATA = [...] # 示例数据元组列表
INSERT_SQL = """INSERT INTO ... VALUES (...) ON CONFLICT ... DO NOTHING"""
class {ClassName}Importer:
def __init__(self): ...
def _read_env(self) -> dict: ... # 从 .env 读配置
def get_conn(self): ... # psycopg.connect
def test_connection(self) -> bool: ...
def create_table(self) -> bool: ... # DROP + 读 DDL 文件 + CREATE
def import_data(self) -> int: ... # executemany
def verify_data(self) -> bool: ... # 统计 + 质量检查
def main():
importer = {ClassName}Importer()
if not importer.test_connection(): sys.exit(1)
if not importer.create_table(): sys.exit(1)
importer.import_data()
importer.verify_data()
if __name__ == "__main__":
main()
verify_data() 必须包含:
cd /d/BaiduSyncdisk/shy_product/shanxi_resilience_enhancement
uv run python scripts/import_{table_name}.py
执行成功后,更新 docs/数据表说明.md:
verify_data() 含唯一性检查192.168.0.75:5432shanxi_resilience_dbsunhaoyu.env 路径:project_root / ".env"| 表名 | 模块 | 主键 |
|---|---|---|
dim_construction_segment | M0 | SERIAL + UNIQUE |
dim_detour_ratio_rule | M5 | VARCHAR id |
dim_lane_capacity_rule | M1 | VARCHAR id |