частичная база данных mysqldump - PullRequest
5 голосов
/ 18 января 2012

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

mysqldump --host=ipaddress --user=username --password=password db_name table_name | mysql -u username -ppassword -h new_url new_db_name

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

Я бы предположил, что рабочий процесс будет выглядеть примерно так:

create temp_table
move rows from old_table where id>2,500,000 into temp_table
some how dump the temp table into the new db's table (which has the same name as old_table)

но я не совсем уверен, как сделать эти шаги.

Ответы [ 2 ]

5 голосов
/ 18 января 2012

Добавьте это --where="id>2500000" в конце команды mysqldump. Справочное руководство по MySQL 5.1

В вашем случае команда mysqldump будет выглядеть как

mysqldump --host=ipaddress \
    --user=username \
    --password=password \
    db_name table_name \
    --where="id>2500000

Если вы сбросите дважды.Второй дамп будет содержать информацию о создании таблицы.Но в следующий раз вы захотите добавить только новые строки.Поэтому для второго дампа добавьте опцию --no-create-info в командной строке mysqldump.

2 голосов
/ 10 декабря 2012

Я разработал инструмент для этой работы.Он называется mysqlsuperdump и может быть найден здесь:

https://github.com/hgfischer/mysqlsuperdump

. С его помощью вы можете указать полное предложение "WHERE" для каждой таблицы, поэтому можно указать разные правила для каждой таблицы.

Вы также можете заменить значения каждого столбца каждой таблицей в дампе.Это полезно, например, когда вы хотите экспортировать дамп базы данных для использования в среде разработки.

...