如何导出MySQL查询的结果,所以我可以导入它再次

问题描述:

我想通过一定的标准来转储从我的表中的数据,这里是SQL查询:如何导出MySQL查询的结果,所以我可以导入它再次

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

表,我从是选择MyISAM合并。

我删除了与该查询相匹配的行,并且我想将它们从备份导回,但仅导入它们。

我曾试图使转储这样的:

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

但它会产生无法通过phpMyAdmin的导入工具导入的文件。再一次,PMA不想做这个查询结果的任何输出。

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

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

+0

您使用什么代码以及尝试导入时会得到什么错误?你使用phpmyadmin是否势在必行?你有没有尝试导入其他任何东西,如命令行?尝试查看outfile,并考虑使用引用来处理新行问题(如果相关)。 – hilcharge

如果说实话,我完全不和的phpmyadmin进口刀具用phpmyadmin,但我知道它如何能在外壳做:

第1步 - 导出转储:

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

第2步 - 进口转储:

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

假设你有机会获得贝壳其中db所在,我希望这将是对你有帮助...

+0

我注意到,当您使用合并MyISAM表时,您需要从子表中转储以获取数据虚拟。这就是为什么我不能接受你的anwer,因为它不完整,但tbh,不知道该怎么做:D –

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

mysql -uroot -proot mydb < dump.sql 
+0

http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html – Cuchu

+0

我注意到了当您使用合并的MyISAM表时,您需要从子表中转储以获取数据。这就是为什么我不能接受你的anwer,因为它不完整,但tbh,不知道该怎么做:D –

+0

你需要忽略外键,你插入数据,但你需要导入其他表的外国价值! cat Cuchu