MySQL 备份库文件 恢复指定表 UPDATE或INSERT

2025-01-08 104 0

步骤

  • 使用grep提取表数据
  • 清空表,插入
  • 或更新,需造数据

强烈注意:备份数据库,然后在客户端执行一条测试OK,再批量脚本执行

如这里需要恢复musiclib数据库下的artist_relation表

该表插入数据

INSERT INTO musiclib.artist_relation (id, artist_id, track_id, album_id, video_id, long_audio_album_id, long_audio_track_id, artist_type, artist_sort, created_at, updated_at, deleted_at) VALUES(1, 1, 1, NULL, NULL, NULL, NULL, 2, 1, '2023-11-03 19:18:11', '2023-11-03 19:18:11', NULL);

INSERT

# 提取指定表数据
grep 'INSERT INTO `artist_relation` VALUES' artist-20250106_032001.sql  > artist_relation_insert.sql

# 清空表数据,但保留表结构(列、索引、约束等)
# 注意备份
TRUNCATE TABLE artist_relation;

# 导入数据
mysql -u root -h 127.0.0.1 -p musiclib < artist_relation_insert.sql

UPDATE

# 提取指定表数据
grep 'INSERT INTO `artist_relation` VALUES' artist-20250106_032001.sql  > artist_relation_insert.sql

# 造数据
awk -F ',' '{print "UPDATE artist_relation SET id=" $1 ", artist_id="$2", track_id="$3", album_id="$4 ", video_id="$5 ", long_audio_album_id="$6 ", long_audio_track_id="$7 ", artist_type="$8 ", artist_sort="$9 ", created_at="$10 ", updated_at="$11", deleted_at="$12 " WHERE id="$1";" }' artist_relation_insert.sql  > artist_relation_update.sql

sed -i 's/(//g' artist_relation_update.sql
sed -i 's/)//g' artist_relation_update.sql

# 注意备份
# 导入数据
mysql -u root -h 127.0.0.1 -p musiclib < artist_relation_update.sql

相关文章

kube-prometheus监控MySQL
Rocky9 Kubernetes MySQL5.7 启动报错解决
MySQL 添加字段锁表 事务导致的锁表记录
MySQL 千万级大表添加字段 pt-online-schema-change使用

发布评论