2016-02-12 56 views
1

我想通過一定的標準來轉儲從我的表中的數據,這裏是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

回答

2

如果說實話,我完全不和的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 –

2
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 <(echo「SET FOREIGN_KEY_CHECKS = 0;」)dump.sql | MySQL的 – Cuchu

相關問題