如何导出mysql查询结果,以便我可以再次导入它

时间:2016-02-12 12:17:28

标签: mysql sql dump

我想按某些条件从我的表中转储数据,这里是sql查询:

"SELECT * FROM document WHERE date BETWEEN 20160101 AND 20160131"

我选择的表格是MyISAM Merge。

我删除了与该查询匹配的行,我想将它们从备份中导回,但只是那些行。

我试过像这样制作转储:

mysql -uroot -proot mydb -e "SELECT * INTO OUTFILE '/tmp/doc.sql' from document WHERE date BETWEEN 20160101 AND 20160131".

但它会生成一个无法通过phpmyadmin导入工具导入的文件。然而,PMA再次不希望导出此查询结果。

有任何帮助吗?由于NDA,我无法发布真实数据库/表的结构。

编辑:对于从MyISAM MRG表中转储数据时遇到的所有问题,您需要从子表中转储,而不是从主表转储。

2 个答案:

答案 0 :(得分:2)

如果说实话,我根本不使用phpmyadmin和phpmyadmin导入工具,但我知道如何在shell中完成:

第一步 - 导出转储:

mysqldump -uUSER -pPASS \
--databases DB_NAME --tables document \
--where 'date BETWEEN 20160101 AND 20160131' \
--no-create-info > document.dump.sql

第二步 - 导入转储:

mysql -uUSER -pPASS -DDB_NAME < document.dump.sql

假设您有权访问db所在的shell,我希望它对您有所帮助......

答案 1 :(得分:2)

mysqldump -uroot -proot mydb document --where="date BETWEEN 20160101 AND 20160131" > dump.sql

mysql -uroot -proot mydb < dump.sql