我试图从一个大型数据库中加载一个小的记录样本到一个测试数据库中。
你怎么能让 mysqldump 只给你800万张唱片中的 n 张?
谢谢
Mysqldump 可以被赋予一个 SQL 查询来执行,它将从中获取转储的数据。然后可以在查询中使用“ limit X”子句来限制行数。
正如斯卡夫曼所说,使用 在哪里选项:
mysqldump --opt --where="1 limit 1000000" database
当然,这将为您提供来自每个表的前100万行。
如果你想从一个特定的表中获得 n记录,你可以这样做:
n
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
这将把名为 table的表中的第一个 1000000行转储到文件 dump.sql中。
table
1000000
dump.sql
由于默认顺序是 ASC,这在这种情况下很少是您想要的,您需要有一个适当的数据库设计,使 DESC 开箱即用。如果所有表都有一个同名的主键列(自然键或代理键) ,那么可以使用以下方法轻松地转储 n 条最新记录:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
这就是为什么应该总是命名 PK 的 身份证并避免组合 PK 的完美理由,即使在关联表中也是如此(使用代理键代替)。