Відповіді:
Як каже скафман, використовуйте варіант --where
mysqldump --opt --where="1 limit 1000000" database
Звичайно, це дасть вам перший мільйон рядків з кожної таблиці.
SELECT * from table WHERE
, тому в цьому випадку ви отримуєте SELECT * from table WHERE 1 limit 1000000
. Без 1 у вас буде недійсний запит. Визначаючи 1 для пункту де (оскільки 1 завжди відповідає дійсності), просто вибирається всі записи.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
для отримання другої сторінки на 1 мільйон записів. Не забудьте використовувати прапор --no-create-info на інших сторінках, крім перших, щоб скинути дані та залишити дані таблиці таблиць .
Якщо ви хочете отримати n
записи з певної таблиці, ви можете зробити щось подібне:
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
Це скине перші 1000000
рядки з таблиці, названої table
у файл dump.sql
.
Оскільки замовленням за замовчуванням є ASC, який рідко є бажаним у цій ситуації, вам потрібно мати належну конструкцію бази даних, щоб DESC працював з коробки. Якщо у всіх ваших таблицях є один стовпець первинного ключа з тим самим іменем (природним або сурогатним), ви можете легко скинути останні п яті записи, використовуючи:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
Це ідеальна причина, чому ви завжди повинні називати ідентифікатор ПК і уникати складених ПК, навіть у таблицях асоціацій (замість цього використовуйте сурогатні ключі).