You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IntelliJ中批量合并Spring Boot项目的SQL插入脚本?

在IntelliJ Ultimate中批量合并SQL INSERT语句的自动化方案

针对你需要批量处理100多个SQL测试文件,合并Main与Extension表INSERT语句的需求,IntelliJ Ultimate提供了几种无需多光标或宏的自动化方案,比编写外部Python脚本更贴合IDE工作流:

1. 结构搜索替换(Structural Search and Replace, SSR)

这是处理结构化文本替换最可靠的内置工具,能忽略格式差异精准匹配SQL语句结构:

  • 打开路径:Edit → Find → Replace Structurally
  • 定义搜索模板:分别匹配成对的Main和Extension INSERT语句,通过主键变量关联两者(假设关联字段为id和main_id):
    • Main表INSERT模板:
      INSERT INTO main (id, $mainCols$) VALUES ($id$, $mainVals$);
      
    • Extension表INSERT模板(需设置$id$变量与Main模板匹配):
      INSERT INTO extension (main_id, extension_col_a) VALUES ($id$, $extVal$);
      
  • 创建替换模板:合并为包含extension_col_a的Main表INSERT:
    INSERT INTO main (id, $mainCols$, extension_col_a) VALUES ($id$, $mainVals$, $extVal$);
    
  • 先在单个文件测试匹配结果,确认无误后,通过Find in Path选择所有目标SQL文件,批量执行替换。

2. IDE内置脚本控制台(Groovy脚本)

如果需要更灵活的逻辑处理格式差异,可以直接在IntelliJ中编写Groovy脚本批量处理文件:

  • 打开脚本控制台:Tools → Script Console → Groovy
  • 编写脚本遍历目标目录下的SQL文件,匹配并合并INSERT语句(示例逻辑):
    def targetDir = new File("src/test/resources/sql") // 替换为你的SQL文件目录
    targetDir.eachFileRecurse { file ->
        if (file.name.endsWith(".sql")) {
            def content = file.getText("UTF-8")
            // 正则匹配成对的Main和Extension INSERT,适配格式差异
            def regex = /INSERT INTO main\s*\((.*?)\)\s*VALUES\s*\((.*?)\);\s*INSERT INTO extension\s*\((.*?)\)\s*VALUES\s*\((.*?),(.*?)\);/
            def updatedContent = content.replaceAll(regex) { match, mainCols, mainVals, _, mainId, extVal ->
                def newCols = "$mainCols, extension_col_a"
                def newVals = "$mainVals, $extVal"
                "INSERT INTO main ($newCols) VALUES ($newVals);"
            }
            file.write(updatedContent, "UTF-8")
        }
    }
    
  • 运行脚本即可批量完成替换,无需离开IDE,还能根据实际格式调整正则逻辑。

3. File Watchers(可选,用于后续自动处理)

如果后续还会新增类似SQL文件,可配置File Watcher自动触发处理:

  • 打开配置:Settings → Tools → File Watchers
  • 添加新Watcher,选择脚本类型(Groovy或Python),设置触发条件为文件保存,关联你的处理脚本,实现新增文件自动合并。

如果已经熟悉Python,外部脚本当然也能实现,但IntelliJ的内置方案更集成化,无需切换工具,且SSR能基于SQL语法结构匹配,比纯正则更稳定。

内容的提问来源于stack exchange,提问作者peer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:48:38