易君召
易君召
发布于 2026-10-26 / 2 阅读
0

如何批量修改 SQL 脚本文件里的数据

场景说明:是修改本地 .sql 文本文件内容(不是在数据库里 update);如果是已经导入数据库、要批量更新表数据,看方案 3。

方案 1:sed(Linux / Mac / WSL,适合大批量 SQL 文件,推荐)

sed 流编辑,直接替换文本,支持批量文件。 语法模板:

# 单文件替换:把 old_val 替换成 new_val,-i 原地修改
sed -i 's/旧内容/新内容/g' test.sql

# 批量所有sql文件(当前目录下所有 *.sql)
sed -i 's/旧内容/新内容/g' *.sql

# 如果内容包含 / 、&、空格,换分隔符 #
sed -i 's#old/abc#new/xyz#g' *.sql

# 带备份(推荐!防止改错,会生成 test.sql.bak 备份)
sed -i.bak 's/旧内容/新内容/g' *.sql

⚠️ Mac 自带 sed 参数不一样,Mac 写法:

sed -i '' 's/旧内容/新内容/g' *.sql
sed -i '.bak' 's/旧内容/新内容/g' *.sql

示例

把 sql 里所有 status=0 改成 status=1

sed -i.bak 's/status=0/status=1/g' *.sql

方案 2:Windows 环境

方式 A:PowerShell(原生,不用装软件)

# 遍历当前目录所有sql,替换,生成备份
Get-ChildItem *.sql | ForEach-Object {
  $content = Get-Content $_.FullName -Raw
  $content -replace '旧内容','新内容' | Set-Content $_.FullName -Encoding UTF8
}

注意:-replace 是正则匹配;如果内容有 . * ( ) [ ] 正则特殊字符要转义 \

方式 B:Notepad++(可视化,适合不懂命令行,少量~几十文件)

  1. Notepad++ → 【搜索】→【在文件中查找】

  2. 查找内容:旧值

  3. 替换为:新值

  4. 目录:选择你的 sql 文件夹

  5. 过滤器:*.sql

  6. 点击【全部替换】 ✅ 优点:预览匹配结果、支持正则;记得先备份文件!

方案 3:数据库内批量更新(不是改 sql 文件本身!容易混淆)

如果你已经把 SQL 导入库,直接执行 UPDATE 批量更新

-- 基础批量更新
UPDATE table_name 
SET column1 = '新值', column2 = 99
WHERE 条件;

-- 示例:所有type=2的数据,name改成test
UPDATE user SET name='test' WHERE type=2;

安全习惯:先 SELECT 验证范围

SELECT * FROM user WHERE type=2;

确认条数对了再跑 UPDATE,避免全表误更新。

✅ 进阶:正则替换(非常常用)

比如批量修改时间、手机号、id,sed / Notepad++ / PowerShell 都支持正则 示例:匹配 phone='13800138000' 这类手机号 查找:phone='\d{11}'

⚠️ 重要安全提醒(必看)

  1. 操作前一定备份所有 sql 文件,批量替换改错很难回滚

  2. 优先先预览匹配,不要直接原地修改

    • sed 不加 -i:只输出结果不修改 sed 's/a/b/g' test.sql

    • Notepad++ 先【查找全部】看匹配行数

  3. 区分:

    • 修改 sql文件文本:sed / Notepad++ / PowerShell

    • 修改数据库表里数据:UPDATE 语句


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/batch-modify-data-in-sql-files

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/