SQL Server的数据生成器?
我想收到有关SQL Server可用数据生成器的建议。如果发布回复,请提供我们认为重要的任何功能。
我从未使用过像这样的应用程序,所以我希望受过这一主题的教育。谢谢你。
(我的目标是在每个表中用10,000多个记录填充数据库,以测试应用程序。)
解决方案
我过去曾使用过数据生成器。可能值得一看。
第三方
如果不注册,则只能生成100行。我们可以在下面找到一个示例,该界面今天(2016年10月)的外观
我以前用过
http://sqlmanager.net/en/products/mssql/datagenerator
它不是免费的。
Ref完整性检查非常重要,否则如果没有相关数据的关联,测试将毫无用处。(在大多数情况下)
在这里有人提出了类似的要求:在数据库中创建测试数据
Red Gate SQL数据生成器在该域中发挥了出色的作用。我们可以自定义数据库的每个字段,并使用带有种子的随机数据。甚至使用Regex表达式创建特定的模式。
Visual Studio Team System数据库版(也称为Data Dude)可以做到这一点。
我尚未将其用于数据生成,但是2个功能听起来不错:
- 为随机数据生成器设置我们自己的种子值。这使我们可以多次处理相同的随机数据。
- 将向导指向"真实"数据库,并使其生成类似于真实数据的内容。
也许这些是其他地方的标准功能?
为了生成示例数据,我使用简单的Python应用程序。
注意事项:
- 易于修改和配置。
- 一组可重复的数据,可用于性能测试并获得一致的结果。
- 遵循所有数据库参照完整性规则和约束。
- 现实的数据。
前两个表示我们要生成将加载数据的脚本文件。第三更难。有发现数据库元数据和约束的方法。一起看3和4,我们不需要简单的逆向工程-我们想要可以控制的东西来产生逼真的值。
通常,我们希望构建自己的实体模型,以确保我们具有正确的范围和关键关系。
我们可以通过三种方式执行此操作。
- 生成可手动加载的数据的CSV文件。不错的可重复测试数据。
- 生成可以运行的SQL脚本。不错的可重复数据。
- 使用ODBC连接直接将数据生成到数据库中。我实际上并不那么喜欢,但我们可能会喜欢。
这是写入CSV文件的数据生成器的精简单表版本。
import csv import random class SomeEntity( list ): titles = ( 'attr1', 'attr2' ) # ... for all columns def __init__( self ): self.append( random.randrange( 1, 10 ) ) self.append( random.randrange( 100, 1000 ) ) # ... for all columns myData = [ SomeEntity() for i in range(10000) ] aFile= open( 'tmp.csv', 'wb' ) dest= csv.writer( aFile ) dest.writerow( SomeEntity.titles ) dest.writerows( myData ) aFile.close()
对于多个实体,我们必须计算基数。我们希望从其他实体中进行随机选择,而不是生成随机密钥。因此,我们可能要让ChildEntity从ParentEntity中选择一个随机元素,以确保FK-PK关系正确。
使用random.choice(someList)
和random.shuffle(someList)
确保引用完整性。
我为此使用了一个名为Datatect的工具。
我喜欢此工具的一些方面:
- 使用ODBC,因此我们可以将数据生成到任何ODBC数据源中。我已经将此用于Oracle,SQL和MS Access数据库,平面文件和Excel电子表格。
- 可通过VBScript扩展。我们可以在数据生成工作流的各个部分编写钩子,以扩展工具的功能。
- 具有参照意义。填充外键列时,从父表中提取有效键。
我使用了自己的数据生成器,该数据生成器生成符合正则表达式的随机数据。它变成了一个学习项目(正在开发中),可以在github上找到。
我刚刚发现了一个:Spawner
这个是免费的:http://www.sqldog.com
包含以下功能:数据生成器,全文搜索,创建数据库文档,活动数据库连接