rrd108/data-mixer

一个简单的工具,通过混合记录从现有数据库创建测试数据。

0.0.1 2017-12-09 17:01 UTC

This package is auto-updated.

Last update: 2024-09-07 05:01:18 UTC


README

这是一个简单的PHP工具,通过混合记录从现有数据库创建测试数据。

有时您希望用与您生产环境相同数量的数据来测试您的应用程序。此脚本读取您现有的数据并混合其内容。

安装

composer --require-dev rrd108/data-mixer

使用方法

  1. 创建生产数据的备份并将其复制到您的开发环境。 绝对不要在生产环境中使用此工具,因为您可能会意外混合数据。 没有恢复,没有撤销,没有取消 的方法,一旦混合,除非有备份,否则无法恢复。

  2. 在您的代码中创建一个新的对象。DataMixer接受与PDO相同的参数。 $dataMixer = new DataMixer('mysql:dbname=test;host=localhost', 'user', 'superSecret');

  3. $fields变量中定义要混合的选择字段。

  4. 获取混合后的数据并根据需要修改它。 $mixed = $dataMixer->getMixed($table, $fields);

  5. 更新数据库中的记录。这将实际上更新您的数据库,所以请小心,没有恢复,没有撤销,没有取消 的方法。 $dataMixer->updateRows($mixed);

$fields数组

$fields数组中定义的字段将被混合。

简单混合

$fields = ['first_name', 'last_name'];

在这种情况下,在$table数据库表中,所有记录的first_namelast_name值将随机混合。所有其他表字段将保持不变。

假设我们有一个以下起始表。

简单混合可能得到以下结果

您可以看到姓名已混合,但所有其他数据(passport_numbersex)保持不变。

相关混合

$fields = [
    ['first_name' => 'sex'], 
    'last_name'
];

在这种情况下,在$table数据库表中,所有记录的first_namelast_name值将像简单混合那样随机混合,但first_name设置为依赖于sex字段的值。这意味着在混合时,脚本将仅从具有相同sex字段值的其他记录中选择第一个名字。

相关混合可能从同一个起始表得到以下结果

由于我们表中只有一个女性,且first_name依赖于sex,没有其他名字可以混合。这就是为什么Jane保留了她原来的名字。

CLI使用方法

该包可以作为shell脚本使用。$ vendor/bin/datamixer

脚本将提示PDO dsn字符串、用户名和密码以连接到数据库,然后是表名和fileds数组。

fileds数组应定义为: first_name => sex, last_name