如何根据条件输出MySQL表Insert行?

Bash

1 前言

一个问题,一篇文章,一出故事。
笔者执行NextCloud的维护任务,需要从数据表中删除用户数据,于是笔者想着删除前先备份用于数据,于是想到把查询的条件备份数据并输出为Insert的插入语句,本章将使用函数实现转换功能,当需要恢复数据时直接筛选出来直接插入。

2 最佳实践

#!/bin/bash

mysqlHost="localhost"
mysqlPort="3306"
mysqlDataBase="nextcloud"
mysqlUser="mysqlUser"
mysqlPasswd="mysqlPassword"

selectToInsert() {
        local tableName="$1"
        local queryCondition="$2"
        mysqldump -u"$mysqlUser" -p"$mysqlPasswd" -h "$mysqlHost" \
                --complete-insert --no-create-info --extended-insert=FALSE \
                "$mysqlDataBase" "$tableName" --where="$queryCondition" \
                | grep "INSERT INTO" | sed "s/INSERT INTO/INSERT INTO \`$mysqlDataBase\`./"
}

# 使用示例
userID="00951F72-ACEC-4A4E-8330-8AEA96562409"
queryCondition="uid_owner = '$userID' or uid_initiator = '$userID' or share_with = '$userID'"
selectToInstall "oc_share" "$queryCondition"
没有评论

发表回复

Bash
如何函数代替Base Shell的命令别名?

1 前言 一个问题,一篇文章,一出故事。 之前的章节我们使用命令别名来缩写输入的命令,相见如下, 如 …

Bash
如何监视服务并自动通知?

1 前言 一个问题,一篇文章,一出故事。 最近笔者希望通过脚本实现监视服务并在服务异常是使用两种方式 …

Bash
如何用Base Shell控制服务启动与停止?

1 前言 一个问题,一篇文章,一出故事。 某些场景,我们使用简单的命令去停止或者启动服务,会遇到出错 …