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

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

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

Спасибо

4 ответа

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам