我有一个带有 InnoDB 表的 MySQL 数据库,其中许多表都有外键。
我打算编写一个脚本来用测试数据(10-20k 行或更多行)填充表,但我想我应该问一下是否已经存在可以根据字段类型生成测试数据但确保关系完整性的东西同时?
我已经在 generateata.com 上看到并下载了该脚本,但据我所知,它很聪明,但它不会读取您的数据库中的表并根据它发现的内容生成数据 - 您必须手动完成所有操作。
这很简单:
call procedurename('DATABASE','TABLE',1000,'');
将填充 1000 个随机行,并根据您的需要填充记录。
编辑:正如 Mark Byers 所指出的,Red-Gate 工具仅适用于 SQL Server。
Red-Gate 有他们的SQL 数据生成器,它具有“用于跨多个表生成一致数据的外键支持”,但它并不便宜。
Datanamic 有一个产品叫做DB Data Generator。
我没有使用过这两种产品,但我使用了两家公司的其他工具,发现它们非常好。
我使用单独的连接脚本。这样,我可以创建一个测试数据库(真实数据库的副本)。我在那里添加我的测试数据。
然后是连接脚本中的一行选择测试数据库,当我准备好时,一行更改回实时数据库。
它非常适合玩、设计、测试等。
这是一个例子:
文件名:includes/connection.php
<?php
$DB_USER='username';
$DB_PASS='password';
$DB_HOST='localhost';
$DB_NAME='dbname';
?>
要查看测试数据库,我将最后一行更改为:
$DB_NAME='testdbname';
然后,我将这个连接文件包含在每个 PHP 脚本中。
希望这可以帮助。