我想收到有关SQL服务器可用的数据生成器的建议.如果发布回复,请提供您认为重要的任何功能.
我从未使用过这样的应用程序,所以我希望接受有关该主题的教育.谢谢.
(我的目标是在每个表中填充10,000多条记录的数据库,以测试应用程序.)
我过去使用过数据生成器.可能值得一看.
如果您没有注册,则只能生成100行.您可以在下面找到今天界面的样子(2016年10月)
这里有类似的问题:在数据库中创建测试数据
Red Gate SQL数据生成器在该域中表现出色.您可以自定义数据库的每个字段,并使用带种子的随机数据.甚至使用Regex表达式创建特定模式.
我已经推出了自己的数据生成器,可以生成符合正则表达式的随机数据.它变成了一个学习项目(正在开发中),可以在github上找到.
为了生成样本数据,我使用简单的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)
确保参照完整性.