限制来自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);
-干杯,