Agent Skills
返回列表
SQL 文件拆分与依赖合并工具

SQL 文件拆分与依赖合并工具

开发编程 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_15292d5a/yjkj-sql-splitter。

技能介绍

要解决的问题

大型数据库迁移时,单个 SQL 文件常混合 CREATE TABLE、CREATE VIEW、存储过程和触发器,手工拆分容易漏依赖,导入顺序一错就会出现对象缺失。sql-splitter 面向这类脚本整理场景,把多对象 SQL 文件或目录拆成独立 .sql 文件,并生成依赖排序的合并脚本。

核心能力与关键步骤

  • 对象边界识别:基于 BEGIN...END 深度匹配处理过程体,兼容 IF...THEN...END IF、CASE...END CASE、LOOP...END LOOP 等嵌套;对 Oracle/达梦的 /、SQL Server 的 GO、PostgreSQL 的 $$...$$ 分别定位对象边界。
  • 依赖排序:解析对象间引用,排除自引用,遇到循环依赖时按对象类型优先级追加,最终生成 merge_all.sql。
  • 方言适配:支持 mysql、postgresql、oracle、sqlserver、dm、generic,合并脚本会使用对应加载方式,例如 Oracle/达梦的 @@filename、SQL Server 的 :r filename、PostgreSQL 的 \i filename。
  • 对象类型:覆盖表、视图、函数、存储过程、触发器、索引、唯一索引、约束、序列、包、同义词、事件、物化视图、类型等。
  • 批量与预览:可处理单文件、目录或多文件,支持 --no-merge、预览、检查点和配置管理,方便中断恢复与结果核对。

适用边界与注意点

该工具适合规范化程度较高的 SQL 脚本拆分;若对象缺少分号、视图缺少 AS、过程体缺少 BEGIN/AS,仍可能出现边界识别不准或重复文件。批量处理会按原文件名创建子目录,同名对象会追加序号。运行前建议保留备份,并用 --dialect 明确数据库类型。

使用场景

  • 整理旧系统导出的单体 MySQL 初始化脚本,把表、视图、存储过程拆成独立文件,并生成导入顺序正确的 merge_all.sql。
  • 在 Oracle 到达梦迁移前,将 SQL Server 风格的过程、函数和视图脚本拆分,并转换为达梦可执行的独立对象文件。
  • 核对一批 PostgreSQL 迁移脚本中视图、物化视图和函数的引用关系,拆分后生成按依赖排序的加载脚本。
  • 批量处理目录里的多个数据库对象脚本,保留检查点并在中断后继续拆分,不重复生成同名文件。

适合人员

  • 负责旧数据库迁移的 DBA,需要把混合对象脚本拆成可单独审查和按序导入的文件。
  • 维护多套方言的数据库工程师,需要在 MySQL、PostgreSQL、Oracle、SQL Server 或达梦间整理对象脚本。
  • 交付数据库初始化脚本的后端工程师,需要自动生成依赖排序的 merge_all.sql 并核对拆分结果。
  • 处理大型对象脚本的运维工程师,需要批量拆分目录、断点续传和预览对比结果。