我想收到有关SQL服务器可用的数据生成器的建议。如果发布回复,请提供您认为重要的任何功能。
我从未使用过这样的应用程序,因此我希望接受有关该主题的教育。谢谢。
(我的目标是在每个表中填充10,000多条记录,以测试应用程序。)
答案 0 :(得分:35)
答案 1 :(得分:16)
这里有类似的问题:Creating test data in a database
Red Gate SQL Data Generator在该领域做得很好。您可以自定义数据库的每个字段,并使用带种子的随机数据。甚至使用Regex表达式创建特定模式。
答案 2 :(得分:12)
我已经推出了自己的数据生成器,可以生成符合正则表达式的随机数据。它变成了一个学习项目(正在开发中),可以在github获得。
答案 3 :(得分:7)
为了生成样本数据,我使用简单的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)
确保参照完整性。
答案 4 :(得分:3)
Visual Studio Team System数据库版(又名Data Dude)就是这样做的。
我还没有将它用于数据生成,但有2个功能听起来不错:
为随机数据生成器设置自己的种子值。这允许您不止一次地生成相同的随机数据。
将向导指向“真正的”数据库,并使其生成看起来像真实数据的内容。
也许这些是其他地方的标准功能?
答案 5 :(得分:3)
我刚刚发现了那个:Spawner
答案 6 :(得分:1)
我已经使用了一个名为Datatect的工具。
我喜欢这个工具的一些事情:
答案 7 :(得分:1)
这是免费的:http://www.sqldog.com 包含几个函数,如:数据生成器,全文搜索,创建数据库文档,活动数据库连接
答案 8 :(得分:0)
我之前用过
http://sqlmanager.net/en/products/mssql/datagenerator
虽然不是免费的。
参考完整性检查非常重要,或者如果不关联相关数据,您的测试将无效。(在大多数情况下)