SELECT user_id, name, status FROM users WHERE registration_date < '2021-01-01' AND name LIKE 'J%';
复制代码
备份受影响的数据
然后,将这些行导出到一个CSV文件中作为备份:
# 使用上面的SELECT查询并通过命令行导出到CSV文件
mysql -u username -p -e "SELECT user_id, name, status FROM database_name.users WHERE registration_date < '2021-01-01' AND name LIKE 'J%'" > backup_users.csv
复制代码
执行修改操作
在确认备份无误后,你可以执行现实的更新操作:
UPDATE users SET status = 'inactive' WHERE registration_date < '2021-01-01' AND name LIKE 'J%';
复制代码
恢复备份数据
如果修改操作出现题目,你可以使用备份的CSV文件来恢复受影响的数据行:
# 首先,确保你有一个用于更新的临时表
CREATE TABLE temp_users LIKE users;
# 从CSV文件加载数据到临时表
LOAD DATA INFILE 'backup_users.csv'
INTO TABLE temp_users
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n';
# 使用临时表中的数据恢复原始表的数据
UPDATE users u
JOIN temp_users tu ON u.user_id = tu.user_id
SET u.status = tu.status
WHERE u.registration_date < '2021-01-01' AND u.name LIKE 'J%';