【问题标题】:Tools for Generating Mock Data? [closed]生成模拟数据的工具? [关闭]
【发布时间】:2009-02-26 18:43:23
【问题描述】:

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

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

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


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


这是我的结论:

  • 生成数据:
    • PHP Web 应用程序界面,而不是命令行
    • 仅限生成 200 条记录(或支付 20 美元购买许可以生成 5,000 条记录)
  • 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 直接访问许多数据库

【问题讨论】:

  • 这在本质上是相似的,并且本身就很有趣:en.wikipedia.org/wiki/Fuzz_testing
  • GenerateData 是 php 应用程序。您可以破解代码以生成所需的任意数量的数据记录。对于 V2.x。不知道3.x会不会改license。
  • 也可以查看Data Constructor

标签: testing data-generation


【解决方案1】:

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

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

我会试一试的。

顺便说一句,similar products 的列表可在 databene benerator 的网站上找到。

【讨论】:

  • 有人使用它成功了吗?我试过了,但是 benerator-wizard 生成了无效的 pom.xml 文件(用于“填充数据库”选项)。此外,使用 maven 进行演示(hsqldb)之一也会导致错误。在我看来,该工具的状态不佳,因此不值得浪费时间。
【解决方案2】:

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

这里列出了其他几个:Test (Sample) Data Generators。我对他们中的任何一个都没有经验,但名单上的一些看起来可能相当不错。

【讨论】:

    【解决方案3】:

    试试http://www.mockaroo.com

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

    【讨论】:

    • 谢谢你的提示,我去看看!
    【解决方案4】:

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

    【讨论】:

    • 是的,我不反对花费 295 美元来节省数百个开发时间。感谢您的领导!
    【解决方案5】:

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

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

    它的优点之一是命令行是高度可定制的。在High Performance MySQL 这本书中有一些相当不错的用法示例,这也是excerpted here

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

    【讨论】:

    • 看起来很有希望!说它支持 PostgreSQL 和 MySQL。感谢您的链接。
    【解决方案6】:

    带有可用假数据生成器之一的 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 可能是最简单的。

    【讨论】:

    • 您是否尝试过通过 ActiveRecord 接口批量加载 > 100 万行,一次一行?我对完成时间并不乐观。
    • 另外,我今天在 Cucumber Feature 的一些步骤和它的 S L O W 中使用了 Faker gem。所以,到目前为止我的分数:ActiveRecord -1; Faker -1 我做的不是很好。 :)
    【解决方案7】:

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

    因为我喜欢 Red-Grate 工具如此简单易学的事实,所以我仍然会关注 SQL Data Generator

    【讨论】:

    • 是的,它的成本更低,与 RedGate 的工具价格相同,但除此之外,您必须具备 ISV 资格,这意味着要购买其他东西。无论如何感谢您的链接,毫无疑问它会对某人有用。 +1
    【解决方案8】:

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

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

    【讨论】:

    • 感谢您的建议。需要注意的是,它仅适用于 Windows 平台,售价 799 美元。
    【解决方案9】:

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

    【讨论】:

    • 感谢您的链接,但是这不是我想要的。
    • 还有一个Firefox的插件叫做Dummy Lipsum,很好用!对不起,我帮不了比尔 :(
    【解决方案10】:

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

    【讨论】:

    • 似乎只能通过每年 5469 美元的 MSDN 订阅获得。用这么多钱,我可以雇一些大学生来制作测试数据并输入。
    【解决方案11】:

    我使用一个叫Datatect的工具:

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

    我已使用此工具为 SQLServer 数据库生成多达 40,000,000 行数据,为 Oracle 数据库生成多达 8,000,000 行数据。

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

    【讨论】:

    • 这看起来是一个很有前途的选择。感谢您的链接。 +1 但是,我没有在 Windows 作为我的主要平台上进行开发,很抱歉我没有在我的问题中指定这一点。
    【解决方案12】:

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

    【讨论】:

      【解决方案13】:

      对于 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

      【讨论】:

        【解决方案14】:

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

        【讨论】:

          【解决方案15】:

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

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

          【讨论】:

          • 是的,我看了一下,但它似乎没有提供我正在寻找的灵活性。无论如何感谢您的链接。
          【解决方案16】:

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

          【讨论】:

            猜你喜欢
            • 2011-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-14
            • 2013-01-12
            • 2010-12-09
            • 1970-01-01
            相关资源
            最近更新 更多