如何从大型 mysqldump 文件中恢复特定表?

6 mysql mysqldump restore

从一个非常大的备份文件(mysqldump的创建)我需要带回只有一个(或几个)特定表(S),而无需加载所有表。

有没有快速的替代品?

Yas*_*IDI 8

你可以通过两个步骤来实现:

第 1 步:在文件中定位您的表(或表)及其(它们)的位置:

 grep -n "Table structure" your_dump_file > list_tables_NUM.TXT
Run Code Online (Sandbox Code Playgroud)

这将创建按位置排名的所有表的列表,例如:

cat list_tables_NUM.TXT
...
41743:-- Table structure for table `table_X`
41770:-- Table structure for table `table_Y`    
42780:-- Table structure for table `table_Z`
...
Run Code Online (Sandbox Code Playgroud)

基于该结果,您将创建一个包含该特定表的辅助文件,假设您只需要恢复 table_X 和 table_Y:

第 2 步:从位置 41743 到 42780 提取:

sed -n '41743,42780 p' your_dump_file > dump_table_XY.sql
Run Code Online (Sandbox Code Playgroud)

最后,您可能会在 dump_table_XY.sql 中找到您的表(结构+数据)

在 Centos7 中测试 MySQL/Mariadb