rrd108 / data-mixer
一个简单的工具,通过混合记录从现有数据库创建测试数据。
Requires (Dev)
- phpunit/phpunit: ^5.7|^6.0
This package is auto-updated.
Last update: 2024-09-07 05:01:18 UTC
README
这是一个简单的PHP工具,通过混合记录从现有数据库创建测试数据。
有时您希望用与您生产环境相同数量的数据来测试您的应用程序。此脚本读取您现有的数据并混合其内容。
安装
composer --require-dev rrd108/data-mixer
使用方法
-
创建生产数据的备份并将其复制到您的开发环境。 绝对不要在生产环境中使用此工具,因为您可能会意外混合数据。 没有恢复,没有撤销,没有取消 的方法,一旦混合,除非有备份,否则无法恢复。
-
在您的代码中创建一个新的对象。DataMixer接受与PDO相同的参数。
$dataMixer = new DataMixer('mysql:dbname=test;host=localhost', 'user', 'superSecret');
-
在
$fields
变量中定义要混合的选择字段。 -
获取混合后的数据并根据需要修改它。
$mixed = $dataMixer->getMixed($table, $fields);
-
更新数据库中的记录。这将实际上更新您的数据库,所以请小心,没有恢复,没有撤销,没有取消 的方法。
$dataMixer->updateRows($mixed);
$fields
数组
在$fields
数组中定义的字段将被混合。
简单混合
$fields = ['first_name', 'last_name'];
在这种情况下,在$table
数据库表中,所有记录的first_name
和last_name
值将随机混合。所有其他表字段将保持不变。
假设我们有一个以下起始表。
简单混合可能得到以下结果
您可以看到姓名已混合,但所有其他数据(passport_number
和sex
)保持不变。
相关混合
$fields = [ ['first_name' => 'sex'], 'last_name' ];
在这种情况下,在$table
数据库表中,所有记录的first_name
和last_name
值将像简单混合那样随机混合,但first_name
设置为依赖于sex
字段的值。这意味着在混合时,脚本将仅从具有相同sex
字段值的其他记录中选择第一个名字。
相关混合可能从同一个起始表得到以下结果
由于我们表中只有一个女性,且first_name
依赖于sex
,没有其他名字可以混合。这就是为什么Jane保留了她原来的名字。
CLI使用方法
该包可以作为shell脚本使用。$ vendor/bin/datamixer
脚本将提示PDO dsn字符串、用户名和密码以连接到数据库,然后是表名和fileds
数组。
fileds
数组应定义为: first_name => sex, last_name