分享一个数据库批量搜索替换指定内容的脚本

碰到了需要批量搜索替换网站数据库里网址的小问题,之前都是在phpMyAdmin里直接SQL语句完成的,但需要一个数据库表一个数据库表的去搜索替换,感觉太麻烦了。就想到了用Linux脚本来实现,经过优化和实测后感觉还不错,就当做笔记给大家分享一下了。

#!/bin/bash

# 数据库配置
DB_NAME="数据库名称"
DB_USER="数据库用户名"
DB_PASS="数据库密码"

# 查找和替换的字符串
SEARCH_STR="要搜索的关键词"
REPLACE_STR="要替换的关键词"

# 获取所有表名
TABLES=$(mysql -u $DB_USER -p$DB_PASS -D $DB_NAME -BN -e "SHOW TABLES;")

# 遍历每个表
for TABLE in $TABLES; do
    # 获取表的列名
    COLUMNS=$(mysql -u $DB_USER -p$DB_PASS -D $DB_NAME -BN -e "SHOW COLUMNS FROM $TABLE;" | awk '{print $1}')

    # 遍历每个列
    for COLUMN in $COLUMNS; do
        # 使用反引号将列名括起来
        mysql -u $DB_USER -p$DB_PASS -D $DB_NAME -e "UPDATE $TABLE SET \`$COLUMN\` = REPLACE(\`$COLUMN\`, '$SEARCH_STR', '$REPLACE_STR');"
        
        # 检查上一条命令是否成功
        if [ $? -ne 0 ]; then
            echo "Error updating table $TABLE, column $COLUMN"
            exit 1
        fi
    done
done

echo "Update completed successfully."

本脚本分别在MySQL和MariaDB下测试实践过, 只需要在终端编辑保存为data.sh执行即可:

bash data.sh

如果数据库庞大,可能执行需要些时间,请耐心等待哦!

本脚本没有系统依赖,无论是SSH远程终端还是宝塔面板里的终端都可以运行的,相对于phpMyAdmin里更加的安全高效!

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

除特别注明外,本站所有文章均基于CC-BY-NC-SA 4.0原创,转载请注明出处。
文章名称:《分享一个数据库批量搜索替换指定内容的脚本》
文章链接:https://www.xlin.cn/xlbk/21760.html
分享到: 更多 (0)

热门文章

评论 抢沙发

切换注册

登录

忘记密码 ?

切换登录

注册