mysql source 命令恢复大量数据

问题遇到的现象和发生背景

数据库备份文件恢复

img

数据库自动备份的整个库的文件,有8G大小,大部分数据都正常,其中部分表有几千万的数据,想恢复其中某个表的数据,每次运行到上千万表数据的时候,都卡死,有没有解决办法,可以跳过某些表,或者只恢复部分指定的表数据

假如每个SQL单独一行,或者换行符比较规律:

  • 先将 SQL文件压缩备份
  • 在 git bash中执行命令 sed -i '/起始字符串/d' SQL文件.sql 删除指定行
  • 在 git bash中执行命令 sed -i 'N,Md' SQL文件.sql 删除 第N到M 行
  • 推荐一个大文件编辑工具 EmEditor https://zh-cn.emeditor.com/

    img

建议:你的SQL文件太大,可以尝试dump命令导出源库,它可以添加参数,只导出数据中的特定表,命令参数比较丰富。数据量大的表,忽略,单独导出一个文件。

  1. 安装的git(带有 Linux bash Shell 基础命令)

    img


    https://git-scm.com/downloads

  2. 安装 git交互界面 TortoiseGit

    img


    TortoiseGit – Windows Shell Interface to Git https://tortoisegit.org/

你不应该用dump文件吗?为啥用这个?
只想恢复某张表的数据,那你把这个表的insert语句导出,为啥要导出整个库的?

给你一个建议,找一个sql 文件内容分割器,然后分割成多个小文件再进行导入数据库

不要在navicat内执行,用命令行执行试试
再不行就得分割数据了