【发布时间】:2013-05-21 14:41:22
【问题描述】:
我正在使用 mysqldump 定期备份我的 MySQL 数据库。这给了我一个带有CREATE TABLE 和INSERT 语句的.sql 文件,允许我按需恢复我的数据库。但是,我还没有找到一种从备份中提取特定数据的好方法,例如从某个表中提取所有符合某些条件的行。
因此,我目前的方法是将整个文件恢复到一个新的临时数据库中,使用新的mysqldump 调用提取我真正想要的数据,删除临时数据库,然后将提取的行导入我的真实数据库。
这真的是最好的方法吗?是否有某种脚本可以直接解析 .sql 文件并提取相关行?不幸的是,我不认为grep 和朋友们有一个简单的解决方案,因为 mysqldump 会生成每行插入许多值的INSERT 语句。
【问题讨论】:
-
嗯,在我看来,你的做法是最好的。当然,如果您需要经常这样做,最好在其上放置某种(php)界面以使其更加用户友好。开发需要一些时间,但每次使用它都会赢回来......
-
也许有一个好的文本编辑器,你可以运行一些正则表达式来选择或删除 sql 语句。
-
mysqldump 就是这样,一个简洁的转储。您通过使用临时表从转储中提取是正确的,但就像@Bartdude 说的那样,编写脚本将是要走的路。你最终会在尝试正则表达式 SQL 转储时碰壁。