我想按某些条件从我的表中转储数据,这里是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表中转储数据时遇到的所有问题,您需要从子表中转储,而不是从主表转储。
答案 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