生成模拟数据的工具?

时间:2009-02-26 18:43:24

标签: testing data-generation

我正在寻找一个好的免费工具的建议,用于生成样本数据以便加载到测试数据库中。通过类比,可以为任何RDBMS生成“lorem ipsum”文本。我正在寻找的功能包括:

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

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


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


以下是我的结论:

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

16 个答案:

答案 0 :(得分:41)

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

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

我会尝试一下。

BTW,databene benerator网站上提供了similar products列表。

答案 1 :(得分:23)

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

此处列出了其他几个:Test (Sample) Data Generators。我对其中任何一个都没有经验,但是那个列表中的一些看起来可能相当不错。

答案 2 :(得分:6)

尝试http://www.mockaroo.com

这是我公司为帮助测试我们自己的应用程序而制作的工具。我们让任何人都可以免费使用它。它基本上是Forgery ruby​​ gem,周围有一个Web应用程序。您可以生成CSV,txt或SQL格式的数据。希望这会有所帮助。

答案 3 :(得分:5)

我知道你说你正在寻找一个免费的工具,但这是一个案例,我建议花295美元将及时收回你的时间。去年我一直在使用RedGate工具SQL Data Generator,简而言之,它是一个很棒的工具。它允许设置列之间的依赖关系,为业务对象生成实际数据,如电话号码,网址,名称等。我可以诚实地说这个工具已经一次又一次地为自己付出了代价。

答案 4 :(得分:2)

如果您正在寻找或愿意使用特定于MySQL的内容,您可以查看Super Smack。它目前由Tony Bourke维护。

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

它的一个好处是命令行是高度可定制的。书中High Performance MySQL还有一些相当不错的用例,也是excerpted here

不确定这是否符合您的要求,只是一个想法。

答案 5 :(得分:2)

使用其中一个可用的假数据生成器的Ruby脚本应该没问题。

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

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

使用Faker的教程:http://www.rubyandhow.com/how-to-generate-fake-names-addresses-in-ruby/


RE:为现有表定义生成数据的灵活性。将Faker gem与其中一个可用的ORM组合在一起。 ActiveRecord可能最容易。

答案 6 :(得分:2)

通常非常昂贵,但如果您是一个小型ISV,您可以非常便宜地获得Visual Studio 2008 Database Edition,请参阅empowerbizspark促销活动。它提供了更多功能,然后只生成测试数据(与SCC集成,单元​​测试,数据库重构等)。

因为我喜欢Red-Grate工具很容易学习,所以我仍然会看SQL Data Generator

答案 7 :(得分:2)

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

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

答案 8 :(得分:1)

我知道你不是在寻找真正的lorem ipsum文字;但是如果其他人搜索了一个实际的lorem ipsum生成器并找到了这个帖子:lipsum.com做得很好。

答案 9 :(得分:1)

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

答案 10 :(得分:1)

我使用名为Datatect的工具:

  1. 生成平面文件或任何ODBC兼容数据库的数据。
  2. 可通过VBScript扩展。
  3. 参考意识;将使用父表中的值填充外键。
  4. 数据是上下文感知的;给定邮政编码,名字和性别标题的城市,州和电话号码。
  5. 可以创建自定义的复杂数据类型。
  6. 生成超过20亿个专有名称,公司名称,街道地址,城市,州和邮政编码。
  7. 我使用此工具为SQLServer数据库生成多达40,000,000行数据,为Oracle数据库生成8,000,000行数据。

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

答案 11 :(得分:1)

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

答案 12 :(得分:1)

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

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

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

在App Store:

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

答案 13 :(得分:1)

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

答案 14 :(得分:0)

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

虚假名称生成器可能很有用 - http://www.fakenamegenerator.com/,不是除了用户帐户或其他类似的东西。 AFAIK他们为批量订单提供支持。

答案 15 :(得分:0)

对于Benerator来说,

+1:我尝试了其中提供的3或4个其他工具(包括dbmonster),但发现Benerator非常快,能够提供逼真的数据并且具有灵活性。我也非常快我在论坛上发布时,该工具的创建者提供了有用的反馈。