限制来自mysqldump的logging数量?

我正试图从一个大型数据库加载一个小样本的logging到一个testing数据库。

你如何告诉mysqldump只给你800万条logging?

谢谢

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

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

当然,这会给你从每个表的第一百万行。

如果你想从一个特定的表中获得n条logging,你可以这样做:

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

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

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

由于默认顺序是ASC,在这种情况下,您很less需要这样的顺序,所以您需要有一个合适的数据库devise,以使DESC可以开箱即用。 如果你所有的表都有一个同名的主键列(自然或代理),你可以使用下面的命令轻松地转储n个最新的logging:

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

这是一个完美的原因,为什么你总是应该命名你的PK的ID,并避免组合PK,即使在关联表(改用替代键)。

你们可以从PHP处理它,如下所示:

 $username = "username"; $password = "password"; $db = "dbname"; $filename ="dumpfilename.sql"; $rows = 10; exec("mysqldump --opt --where='1 limit ".$rows."' -u ".$username." -p".$password." ".$db." > ".$filename); 

-干杯,