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

如何将多个SQL迁移文件合并为单个文件(仅保留Up命令)

脱离编程语言/框架合并SQL迁移Up命令为单一文件

要把所有Up迁移文件里的有效变更命令按顺序合并成一个最终文件,直接用系统自带的命令行工具就能搞定,步骤如下:

1. 筛选并排序Up文件

确保你在存放所有SQL迁移文件的目录下,先列出所有带_up.sql后缀的文件,并按时序命名规则排序(比如你给的000001、000002这类数字前缀,自然排序即可):

ls -1 *up.sql | sort -n

如果文件名版本号格式特殊(比如带字母),用sort -V按版本号规则排序更稳妥。

2. 提取Up部分并合并

分两种场景处理:

场景一:Up文件同时包含Up和Down块

这类文件里有-- +migrate Up和-- +migrate Down标记,需要只提取Up块内的内容(排除Down块),运行以下命令就能把所有内容合并到final_migration.sql:

for file in $(ls -1 *up.sql | sort -n); do
  sed -n '/^-- +migrate Up/,/^-- +migrate Down/{/^-- +migrate Down/!p}' "$file"
done > final_migration.sql

如果连-- +migrate Up这个注释也想去掉,用下面的命令过滤掉标记行:

for file in $(ls -1 *up.sql | sort -n); do
  sed -n '/^-- +migrate Up/,/^-- +migrate Down/{/^-- +migrate Up/!{/^-- +migrate Down/!p}}' "$file"
done > final_migration.sql

场景二:Up文件仅包含Up命令

如果每个_up.sql文件里全是要执行的变更命令,直接合并即可:

cat $(ls -1 *up.sql | sort -n) > final_migration.sql

3. 校验结果

合并完成后,打开final_migration.sql检查一遍,确保命令顺序正确,没有多余的Down块内容或重复语句,确认无误后就能直接用这个文件初始化数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:59:58