如何根据条件输出MySQL表Insert行?
- By : Will
- Category : Bash, MySQL & MariaDB

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"
没有评论