我想收到有关 SQL Server 可用数据生成器的建议。如果发布回复,请提供您认为重要的任何功能。
我从未使用过这样的应用程序,所以我希望接受有关该主题的教育。谢谢你。
(我的目标是在每个表中填充 10,000 多条记录的数据库,以测试应用程序。)
我想收到有关 SQL Server 可用数据生成器的建议。如果发布回复,请提供您认为重要的任何功能。
我从未使用过这样的应用程序,所以我希望接受有关该主题的教育。谢谢你。
(我的目标是在每个表中填充 10,000 多条记录的数据库,以测试应用程序。)
这里已经问过类似的问题:在数据库中创建测试数据
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)
确保参照完整性。
Visual Studio Team System Database Edition(又名 Data Dude)就是这样做的。
我还没有将它用于数据生成,但有 2 个功能听起来不错:
为随机数据生成器设置您自己的种子值。这使您可以多次生成相同的随机数据。
将向导指向“真实”数据库并让它生成看起来像真实数据的东西。
也许这些是其他地方的标准功能?
我刚刚发现了一个:Spawner
为此,我使用了一个名为Datatect的工具。
我喜欢这个工具的一些事情:
这个是免费的:http ://www.sqldog.com 包含几个功能,如:数据生成器、全文搜索、创建数据库文档、活动数据库连接
我以前用过这个
http://sqlmanager.net/en/products/mssql/datagenerator
虽然它不是免费的。
Ref 完整性检查非常重要,否则如果没有关联相关数据,您的测试将无法进行。(在大多数情况下)