2011-04-25 210 views
1

我有一个名为forum.sql的大型mySQL数据库转储。我想只恢复一个表,但是当我恢复完整的数据库时,导入“后”表需要很长时间。如何在恢复mysql数据库时跳过表格?

是否有任何选项来恢复此数据库跳过“后”表?

+0

可能的重复http://stackoverflow.com/questions/1013852/can-i-restore-a-single-table-from-a-full-mysql-mysqldump-file – KCD 2012-04-02 00:35:22

回答

0

据我所知,没有。

您必须手动编辑转储文件中不需要的表的CREATEINSERT语句。

1

我不认为你可以做到这一点。但是,您可以在需要时单独转储表,使用--tables myqsldump选项。因此,您可以为post表生成转储,并为其余表生成另一个转储。

例子:

mysqldump -u USERNAME -pPASSWORD --tables TABLE_NAME database_name > TABLE_NAME.sql 
+1

感谢您的回复我知道我可以转储只有表,但我想恢复数据库其他表 – user724001 2011-04-25 16:55:01

3

如果您要从转储文件恢复,只需写下行号,就可以轻松地在不使用此表的情况下构建新的转储文件。

初始行

> grep dumpfile.sql -ne "Dumping data for table \`avoid_tablename\`" -m 1 
43:-- Dumping data for table `avoid_tablename` 

共线

> wc -l dumpfile.sql 
63 dumpfile.sql 

从从其减去63创建一个新的文件

> head -n 43 dumpfile.sql > dumpfile-lite.sql 
> tail -n 20 dumpfile.sql >> dumpfile-lile.sql 

20来 - 43

不干净,但有用

+0

这可以在不知道文件中的总行的情况下完成。 tail -n +43 output_file 处理HUGE文件很有帮助 – mikeschuld 2014-12-17 22:21:58