SQL Server的数据生成器?

时间:2020-03-06 14:58:33  来源:igfitidea点击:

我想收到有关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
包含以下功能:数据生成器,全文搜索,创建数据库文档,活动数据库连接