2013-05-21 4 views
2

Я делаю регулярные резервные копии моей базы данных MySQL с помощью mysqldump. Это дает мне файл .sql с операторами CREATE TABLE и INSERT, что позволяет мне восстановить мою базу данных по требованию. Однако мне еще предстоит найти хороший способ извлечения определенных данных из этой резервной копии, например. извлеките все строки из определенной таблицы, соответствующие определенным условиям.Извлечь конкретные данные из полного резервной копии mysqldump

Таким образом, мой текущий подход заключается в том, чтобы восстановить весь файл в новую временную базу данных, извлечь нужные мне данные с помощью нового вызова mysqldump, удалить временную базу данных и затем импортировать извлеченные строки в мою реальную базу данных.

Действительно ли это лучший способ сделать это? Есть ли какой-то скрипт, который может напрямую анализировать файл .sql и извлекать соответствующие строки? Я не думаю, что есть простое решение с grep и друзьями, к сожалению, поскольку mysqldump генерирует операторы INSERT, которые вставляют много значений в строку.

+0

Ну, как вы это делаете, мне кажется, что это лучший способ. Конечно, если вам нужно делать это очень часто, было бы неплохо поместить на него какой-то (php) интерфейс, чтобы сделать его более удобным для пользователя. Это будет стоить некоторое время для разработки, но вы будете выигрывать его каждый раз, когда вы его используете ... –

+0

возможно, с хорошим текстовым редактором, вы можете запускать некоторые регулярные выражения, чтобы выбирать или вытеснять SQL-запросы. – bcolin

+0

mysqldump - это просто свалка. Вы делаете это правильно, используя временную таблицу для извлечения из дампа, но, как сказал @Bartdude, скриптирование было бы правильным путем. Вы просто закончили бы избивать голову против стены, пытаясь повторно выставить SQL-дамп. – MrCleanX

ответ

1

Решение этого только что закончилось тем, что нужно было импортировать весь файл, извлечь нужные данные и снова сбросить базу данных.

Смежные вопросы