2016-02-12 2 views
1

Я хочу, чтобы выгрузить данные из моей таблицы по определенным критериям, вот SQL запрос:Как экспортировать результат запроса MySQL, так что я могу импортировать его обратно

"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.

EDIT: для всех, у кого есть проблемы с отправкой данных из таблицы MyISAM MRG, вам нужно сбросить с подтаблицы, а не из главного.

+0

Какой код вы используете и какие ошибки вы получаете при попытке импортировать? нужно ли вам использовать phpmyadmin? вы пытались импортировать что-нибудь еще, например, в командной строке? попробуйте посмотреть outfile и соглашайтесь на использование цитат для решения проблем новой строки, если это необходимо. – hilcharge

ответ

2

Если честно я не использую PHPMyAdmin на всех и PhpMyAdmin инструмент импорта, но я знаю, как это может быть сделано в скорлупе:

первый шаг - экспорт свалка:

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 

Предположим, у вас есть доступ к раковине, где дб находится, и я надеюсь, что это будет полезно для вас ...

+0

Я заметил, что, когда вы работаете с таблицами Merged MyISAM, вам нужно сбрасывать из подтаблицы, чтобы получить данные, заглушенные. Вот почему я не могу принять ваш андер, потому что он не является полным, но tbh, dunno, что делать: 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/mysqlump.html – Cuchu

+0

Я заметил что, когда вы работаете с таблицами Merged MyISAM, вам нужно сбрасывать с подтаблицы, чтобы получить данные, заглушенные. Вот почему я не могу принять ваш anwer, потому что он не является полным, но tbh, dunno, что делать: D –

+0

вам нужно игнорировать внешний ключ, вы вставляете данные, но после необходимости импорта других таблиц с иностранными значениями! cat <(echo "SET FOREIGN_KEY_CHECKS = 0;") dump.sql | MySQL – Cuchu