SuperAPI AI 工具集

sqlite-to-oracle-planner

数据与分析

查看项目

更新于 10-15 08:17

技能介绍

用途

SQLite-to-Oracle Planner 是一个仅用于规划的 Agent 技能,适用于在 Node.js/TypeScript 代码库上启动 SQLite 到 Oracle 迁移的场景。它的职责是搜索、最小化阅读并产出迁移清单(Manifest),不实施任何代码改动。

主要能力

该技能采用五轮扫描策略,记录每一处命中的文件路径与行号:

第 1 轮 — 依赖导入:匹配 better-sqlite3、sqlite3、drizzle-orm/sqlite-core、typeorm 的 sqlite 驱动、@agent-state 等模式,扫描 /*.ts、/.js、**/.mjs、**/*.cjs 文件,并给出对应的 Oracle 等价物(如 better-sqlite3 → oracledb 或项目 Oracle 连接池)。

第 2 轮 — SQLite 数据文件:通过 Glob 匹配 /*.db、/.sqlite、**/.sqlite3,标记每个数据文件,提示它们需要数据迁移而非仅代码改动。

第 3 轮 — 连接字符串与基于文件的数据库路径:匹配 sqlite:、:memory:、.db['")]、new Database(、createConnection( 等模式,扫描 /*.ts、/.js、**/.env、**/.env. 文件,并给出 Oracle 等价物(如 sqlite:./path/to/db.sqlite → OCI 连接字符串 / TNS 别名)。

第 4 轮 — Schema 语法:匹配 AUTOINCREMENT、INTEGER PRIMARY KEY、TEXT DEFAULT、BLOB、REAL、NUMERIC 等模式,扫描 /*.sql、/.ts、**/.js 文件,并给出类型映射(如 INTEGER PRIMARY KEY AUTOINCREMENT → NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY;TEXT 小于 4000 字符 → VARCHAR2(4000);TEXT 无界/大 → CLOB;REAL → BINARY_FLOAT 或 NUMBER;BOOLEAN 存储 0/1 → NUMBER(1) 加 CHECK 约束;DATETIME 存储为文本 → TIMESTAMP WITH TIME ZONE 等)。

第 5 轮 — 回退逻辑(最常被遗漏):匹配 sqlite、SQLite、in.memory、fallback.db、db.fallback(不区分大小写),扫描 **/.ts、**/.js 文件。当 Oracle 不可用时回退到 SQLite 的条件分支必须被完全移除,而不仅仅是替换。

使用方式

该技能要求使用 Glob 和 Grep 进行扫描,绝不通过读取整个文件来扫描。完成五轮扫描后,输出迁移清单,格式为表格,包含文件、行号、发现的模式、标记([SQLITE_REPLACE])、Oracle 等价物等列,并统计总触点数、预估实现任务数、需要迁移的数据文件数。每个 [SQLITE_REPLACE] 标记对应一个原子实现单元,供后续实现代理使用。

适用场景

适用于在 Node.js/TypeScript 代码库上启动 SQLite 到 Oracle 迁移的规划阶段,帮助识别所有需要改动的触点,为后续实现代理提供结构化清单。

限制

该技能仅用于规划,不实施任何代码改动。它要求使用 Glob 和 Grep 而非通读文件。需要注意的常见错误包括:通读整个文件来搜索、跳过第 5 轮回退逻辑、假设 TEXT 一律映射为 VARCHAR2(实际内容超过 4000 字符需要 CLOB)、忽略 .db 数据文件、遗漏 drizzle-orm/sqlite-core schema 文件、将 Oracle 侧代码误标为 SQLite(需过滤迁移文档或注释中的误报)。