Я пытаюсь загрузить небольшой образец записей из большой базы данных в тестовую базу данных.
Как вы говорите, что mysqldump дает вам только n записей из 8 миллионов?
Спасибо
Я пытаюсь загрузить небольшой образец записей из большой базы данных в тестовую базу данных.
Как вы говорите, что mysqldump дает вам только n записей из 8 миллионов?
Спасибо
Как говорит скаффман, используйте опцию - where:
mysqldump --opt --where="1 limit 1000000" database
Конечно, это даст вам первый миллион строк из каждой таблицы.
Если вы хотите получить записи n
из определенной таблицы, вы можете сделать что-то вроде этого:
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
Это выведет первые строки 1000000
из таблицы с именем table
в файл dump.sql
.
mysqldump может быть предоставлен SQL-запрос для выполнения, из которого он будет принимать данные для дампа. Затем вы можете использовать предложение "limit X" в своем запросе, чтобы ограничить количество строк.
Поскольку заказ по умолчанию - это ASC, который редко встречается в этой ситуации, вам нужно иметь надлежащий дизайн базы данных, чтобы сделать работу DESC из коробки. Если все ваши таблицы имеют один столбец первичного ключа с таким же именем (естественным или суррогатным), вы можете легко сбрасывать n последних записей, используя:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
Это идеальная причина, почему вы всегда должны указывать свой идентификатор PK и избегать составных PK, даже в таблицах ассоциаций (вместо этого используйте вместо них суррогатные ключи).
Вы, ребята, можете обрабатывать его с 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,