限制mysqldump的记录数量?

时间:2008-09-25 20:29:30

标签: mysqldump

我正在尝试将大型数据库中的一小部分记录加载到测试数据库中。

你怎么告诉mysqldump只给你800万个n个记录?

由于

4 个答案:

答案 0 :(得分:198)

正如skaffman所说,使用 - where 选项:

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

当然,这会给你每张桌子的第一百万行。

答案 1 :(得分:53)

如果您想从特定表中获取n条记录,您可以执行以下操作:

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

这会将名为1000000的表中的第一个table行转储到文件dump.sql中。

答案 2 :(得分:8)

可以给mysqldump一个SQL查询来执行,从中获取转储的数据。然后,您可以在查询中使用“limit X”子句来限制行数。

答案 3 :(得分:1)

由于默认顺序是ASC,在这种情况下很少你想要的,你需要有一个合适的数据库设计来使DESC开箱即用。如果您的所有表都有一个具有相同名称(自然或代理)的主键列,您可以使用以下方法轻松转储n个最新记录:

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

这就是为什么你应该总是命名PK的 id 并避免复合PK的原因,即使在关联表中也是如此(使用代理键)。