104

我正在寻找一个好的、免费的工具来生成样本数据,以便加载到测试数据库中。以此类推,为任何 RDBMS 生成“ lorem ipsum ”文本的东西。我正在寻找的功能包括:

  • 为现有表定义生成数据的灵活性。
  • 能够生成大小数据集(> 100 万行或更多)。
  • 以 SQL 脚本格式(INSERT语句)或其他适合批量导入的平面文件格式生成(通常更快)。
  • 用于轻松编写脚本的命令行界面。
  • 可扩展的、开源的、用动态语言编写的(这些都是不错的,不是强要求)。

PS:我确实在 StackOverflow 上搜索了一个重复的问题,但没有找到。如果有的话,我会很感激得到一个指向它的指针。


感谢大家的精彩回复!我应该修改我的要求,即我使用 Mac OS X 作为我的主要开发环境,而不是 Windows(尽管我确实说过命令行界面是可取的,并且实际上排除了 Windows)。不过,Windows 特定的建议无疑会对这个问题的其他读者有用,所以谢谢。


这是我的结论:

  • 生成数据:
    • PHP Web 应用程序界面,而不是命令行
    • 仅限于生成 200 条记录(或为生成 5,000 条记录的许可支付 20 美元)
  • RedGate SQL 数据生成器
    • 不是免费的,售价 295 美元
    • 需要 Windows、.NET、SQL Server
  • Visual Studio 2008 数据库版
    • 需要 Windows
    • 需要昂贵的 MSDN 或 ISV 订阅
  • 横幅数据检测
    • 不是免费的,价格 595 美元
    • 需要 Windows (?)
    • 不支持 MySQL (?)
    • GUI,不是命令行或可编写脚本的
  • Ruby Faker 宝石
    • 使用 ActiveRecord 进行批量数据加载太慢了
  • 超级棒
    • 主要是负载测试工具,内置随机数据生成器
    • 不过使用起来很简单
    • 总体来说是一个不错的亚军工具
  • Databene Benerator
    • 满足我需求的最佳解决方案
    • XML 脚本,与 DbUnit 兼容
    • 开源 (GPL) Java 代码
    • 命令行使用
    • 通过 JDBC 直接访问许多数据库
4

16 回答 16

41

看看databene benerator,一个看起来接近您要求的测试数据生成器。

  • 它可以为现有的表定义生成数据(甚至匿名生产数据)
  • 它可以生成大数据集(无限大小)
  • 它支持各种输入(CSV、平面文件、DBUnit)和输出格式(CSV、平面文件、DBUnit、XML、Excel、脚本)
  • 它可以在命令行上使用,也可以通过 maven 插件使用
  • 它是开源和可定制的

我会试一试。

顺便说一句,databene benerator 的网站上提供了类似产品的列表。

于 2009-03-05T11:21:32.697 回答
23

这看起来很有希望:generatedata.com。开源,有很多内置的数据类型。

这里列出了其他几个:测试(样本)数据生成器。我对他们中的任何一个都没有经验,但名单上的一些人看起来可能相当不错。

于 2009-02-26T19:06:15.960 回答
6

试试http://www.mockaroo.com

这是我公司为帮助测试我们自己的应用程序而开发的工具。我们已经免费供任何人使用。它基本上是 Forgery ruby​​ gem,带有一个 Web 应用程序。您可以生成 CSV、txt 或 SQL 格式的数据。希望这可以帮助。

于 2013-02-05T04:32:02.817 回答
5

我知道您说过您正在寻找免费工具,但在这种情况下,我建议花费 295 美元会在节省时间的情况下迅速收回成本。去年我一直在使用 RedGate 工具SQL 数据生成器,简而言之,它是一个很棒的工具。它允许设置列之间的依赖关系,为电话号码、url、姓名等业务对象生成真实的数据。我可以诚实地说,这个工具一次又一次地为自己付出了代价。

于 2009-03-04T15:18:31.950 回答
2

如果你正在寻找或愿意使用 MySQL 特定的东西,你可以看看Super Smack。它目前由 Tony Bourke 维护。

Super Smack 允许您生成随机数据以插入到您的数据库表中。它是可定制的,允许您使用打包的 words.dat 文件或您选择的任何测试数据。

它的优点之一是它的命令行是高度可定制的。《高性能 MySQL》一书中有一些相当不错的使用示例,也摘录在这里

不确定这是否符合您正在寻找的内容,但只是一个想法。

于 2009-03-03T23:12:10.117 回答
2

带有可用假数据生成器之一的 Ruby 脚本应该可以满足您的需求。

http://faker.rubyforge.org/就是这样一颗宝石。不幸的是,这并不能满足您的所有要求。

这是另一个:http ://random-data.rubyforge.org/

还有一个使用 Faker 的教程:http ://www.rubyanandhow.com/how-to-generate-fake-names-addresses-in-ruby/


RE:为现有表定义生成数据的灵活性。将 Faker gem 与可用的 ORM 之一结合起来。ActiveRecord 可能是最简单的。

于 2009-03-04T14:36:30.880 回答
2

通常非常昂贵,但如果您是小型 ISV,您可以非常便宜地获得Visual Studio 2008 数据库版,请参阅授权bizspark促销。它提供了比生成测试数据更多的功能(与 SCC 集成、单元测试、数据库重构等)

由于我喜欢 Red-Grate 工具如此易于学习这一事实,我仍然会关注SQL 数据生成器

于 2009-03-05T13:57:26.003 回答
2

列表中真正不应缺少的工具是 Datanamic 的数据生成器,它直接填充数据库或生成插入脚本,具有大量预安装的生成器(并支持多个数据库......

http://www.datanamic.com/datagenerator/index.html

于 2013-02-14T13:58:10.200 回答
1

我知道您不是在寻找实际的 lorem ipsum 文本;但万一其他人搜索实际的 lorem ipsum 生成器并找到这个线程:lipsum.com做得很好。

于 2009-02-26T20:08:38.323 回答
1

不是免费的,但Visual Studio 2008 数据库版是一个不错的选择,它提供了更多功能(与 SCC 集成、单元测试、数据库重构等...)

于 2009-03-04T15:18:01.467 回答
1

我使用一个名为Datatect的工具:

  1. 将数据生成到平面文件或任何 ODBC 兼容数据库。
  2. 可通过 VBScript 扩展。
  3. 参考意识;将使用父表中的值填充外键。
  4. 数据是上下文感知的;给定邮政编码的城市、州和电话号码、名字和带有性别的头衔。
  5. 可以创建自定义的复杂数据类型。
  6. 生成超过 20 亿个专有名称、企业名称、街道地址、城市、州和邮政编码。

我使用这个工具为 SQLServer 数据库生成了多达 40,000,000 行数据,并为 Oracle 数据库生成了 8,000,000 行数据。

我与 Banner Systems 没有任何关系,我只是一个满意的客户。

于 2009-03-07T15:49:50.633 回答
1

以下是此类工具的列表(免费和商业): http ://c2.com/cgi/wiki?TestDataGenerator

于 2012-11-11T20:48:43.833 回答
1

对于 OS X,有 Data Creator(7 美元)。出于测试目的免费下载。您可以使用它来评估软件及其功能。

它需要 OS X Lion 或后续版本。它可以生成很多不同的字段类型,并具有自定义导出模式以及一些预设(TSV、CSV、Html 表格、带有表格的网页)。

http://www.tensionsoftware.com/osx/datacreator/

在应用商店:

https://itunes.apple.com/us/app/data-creator/id491686136?mt=12

于 2013-06-04T16:26:56.983 回答
1

您可以使用 DbSchema,www.dbschema.com,它是一个数据库管理工具,它有一个随机数据生成器来填充您的数据库。

于 2013-06-28T09:53:17.330 回答
0

不能直接回答您的问题,但这对某些类型的数据可能会有所帮助:

假名生成器可能很有用 - http://www.fakenamegenerator.com/,除了用户帐户或类似的东西外,不适用于所有内容。AFAIK 他们为批量订购提供支持。

于 2009-03-04T14:52:11.327 回答
0

Benerator +1:我尝试了 3 或 4 种其他提供的工具(包括 dbmonster),但发现 Benerator 非常快,可以提供真实的数据并且非常灵活。当我在论坛上发帖时,我还从该工具的创建者那里得到了非常快速且有用的反馈。

于 2009-09-23T12:01:41.507 回答