Answers:
作为skaffman说,使用--where选项:
mysqldump --opt --where="1 limit 1000000" database
当然,这将为您提供每个表的前一百万行。
SELECT * from table WHERE
,因此在这种情况下,您会得到SELECT * from table WHERE 1 limit 1000000
。没有1,您将有一个无效的查询。为where子句指定1(因为1始终为true)只会选择所有记录。
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
获得100万条记录的第二页。确保在第一个页面之外的页面上使用--no-create-info标志,以仅转储数据并保留创建表的内容。
如果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的ID并避免使用组合PK的最佳理由,即使在关联表中也是如此(改用代理键)。