场景说明:是修改本地
.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++(可视化,适合不懂命令行,少量~几十文件)
Notepad++ → 【搜索】→【在文件中查找】
查找内容:
旧值替换为:
新值目录:选择你的 sql 文件夹
过滤器:
*.sql点击【全部替换】 ✅ 优点:预览匹配结果、支持正则;记得先备份文件!
方案 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}'
⚠️ 重要安全提醒(必看)
操作前一定备份所有 sql 文件,批量替换改错很难回滚
优先先预览匹配,不要直接原地修改
sed 不加
-i:只输出结果不修改sed 's/a/b/g' test.sqlNotepad++ 先【查找全部】看匹配行数
区分:
修改 sql文件文本:sed / Notepad++ / PowerShell
修改数据库表里数据:UPDATE 语句
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢