Ограничение количества записей из mysqldump?

Я пытаюсь загрузить небольшой образец записей из большой базы данных в тестовую базу данных.

Как вы говорите, что mysqldump дает вам только n записей из 8 миллионов?

Спасибо

Ответ 1

Как говорит скаффман, используйте опцию - where:

mysqldump --opt --where="1 limit 1000000" database

Конечно, это даст вам первый миллион строк из каждой таблицы.

Ответ 2

Если вы хотите получить записи n из определенной таблицы, вы можете сделать что-то вроде этого:

mysqldump --opt --where="1 limit 1000000" database table > dump.sql

Это выведет первые строки 1000000 из таблицы с именем table в файл dump.sql.

Ответ 3

mysqldump может быть предоставлен SQL-запрос для выполнения, из которого он будет принимать данные для дампа. Затем вы можете использовать предложение "limit X" в своем запросе, чтобы ограничить количество строк.

Ответ 4

Поскольку заказ по умолчанию - это ASC, который редко встречается в этой ситуации, вам нужно иметь надлежащий дизайн базы данных, чтобы сделать работу DESC из коробки. Если все ваши таблицы имеют один столбец первичного ключа с таким же именем (естественным или суррогатным), вы можете легко сбрасывать n последних записей, используя:

mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql

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

Ответ 5

Вы, ребята, можете обрабатывать его с PHP следующим образом:

$username = "username";
$password = "password";
$db = "dbname";
$filename ="dumpfilename.sql";
$rows = 10;
exec("mysqldump --opt --where='1 limit ".$rows."' -u ".$username." -p".$password." ".$db." > ".$filename);

-Cheers,