Ограничение количества записей из 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 в вашем запросе, чтобы ограничить количество строк.