- 已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。
这个问题似乎与help center中定义的范围内的编程无关。
2天前关闭。
Improve this question
有没有办法使用mysqldump
命令创建一个带有示例行的数据库副本?myslqdump -u <username> -h <host> -p <database name> [<table name> ...]
我有一个相当大的数据库,需要创建一个副本,以便开发人员可以使用该应用程序。有没有一种方法可以随机采样行并创建db
的副本,而不是转储整个数据库?
1条答案
按热度按时间6l7fqoea1#
Mysqldump确实支持行级备份,因为它有
--where
选项来过滤要转储的行。下面是参考手册中的说明:***--where =“所在条件”,-w“所在条件”
仅转储由给定WHERE条件选择的行。如果条件包含空格或命令解释程序专用的其他字符,则必须在条件两边加上引号。***
但它可能不是那么用户友好。即使我们把一个子查询放在WHERE子句中,我们仍然面临着一些可能无法克服的限制。例如,让我们使用DB sakila中的actor表。在mysql cli中执行这个操作是合法的:
但是,在使用mysqldump时使用相同的WHERE子句是错误的。
此外,正如Shadow所说,在使用mysqldump时,保持引用完整性是一个问题。我们不希望表和不可用的数据集之间的关系被破坏。无论如何,请不要使用mysqldump进行随机行级采样。
在这种情况下,我能想到的最好方法是使用存储过程对新数据库执行行级备份,内容如下:
整个过程绝对不是一个简单的过程,因为我们必须记住表的关系,但是一旦完成了这项工作,我们就可以安全地使用mysqldump在数据库级别转储sakila_bck。