SQLサーバーで利用可能なデータジェネレーターに関する提案を受け取りたいです。回答を投稿する場合は、重要だと思われる機能を提供してください。
私はこのようなアプリケーションを使用したことがないので、このトピックに関する教育を受けたいと思っています。ありがとうございました。
(私の目標は、データベースを各テーブルに10,000以上のレコードで埋めて、アプリケーションをテストすることです。)
正規表現に準拠したランダムデータを生成する独自のデータジェネレーターを展開しました。これは学習プロジェクトになり(開発中)、 github で入手できます。
過去に data generator を使用しました。一見の価値があるかもしれません。
登録しないと、100行しか生成できません。以下は、今日のインターフェースの外観のサンプルです(2016年10月)
同様のことがここで尋ねられています: データベースでのテストデータの作成
Red Gate SQL Data Generator は、そのドメインで素晴らしい仕事をします。データベースのすべてのフィールドをカスタマイズし、シードでランダムデータを使用できます。正規表現を使用して特定のパターンを作成することもできます。
サンプルデータを生成するために、単純なPythonアプリケーションを使用します。
考慮事項:
変更と構成が簡単です。
パフォーマンステストのために、一貫した結果を得ることができる、繰り返し可能なデータのセット。
すべてのDB参照整合性ルールと制約に従います。
現実的なデータ。
最初の2つは、データをロードするスクリプトファイルを作成することを示しています。 3番目はより厳しいです。データベースのメタデータと制約を発見する方法があります。 3と4を一緒に見ると、単純なリバースエンジニアリングは必要ありません。現実的な値を生成するために制御できるものが必要です。
一般に、範囲とキーの関係が正しいことを確認できるように、独自のエンティティモデルを構築する必要があります。
これには3つの方法があります。
手動でロードできるデータのCSVファイルを生成します。繰り返し可能なテストデータ。
実行可能なSQLスクリプトを生成します。素敵な再現可能なデータも。
ODBC接続を使用して、データベースに直接データを生成します。実際、これはあまり好きではありませんが、そうするかもしれません。
これは、CSVファイルを書き込む、データジェネレーターの簡略化された1つのテーブルのみのバージョンです。
_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)
を使用して、参照整合性を確保します。
私はちょうどそれについて見つけました: Spawner
Visual Studio Team System Database Edition(別名Data Dude)がこれを行います。
私はまだデータ生成に使用していませんが、2つの機能がいい感じです:
ランダムデータジェネレーターに独自のシード値を設定します。これにより、同じランダムデータを複数回生成できます。
ウィザードで「実際の」データベースを指定し、実際のデータのように見えるものを生成します。
たぶん、これらは他の場所の標準機能ですか?
これには Datatect というツールを使用しました。
このツールについて私が気に入っていることのいくつか:
これは無料です。 http://www.sqldog.com には、データジェネレータ、全文検索、データベースドキュメントの作成、アクティブなデータベース接続などの機能が含まれています。
私は前にこれを使用しました
http://sqlmanager.net/en/products/mssql/datagenerator
ただし、無料ではありません。
参照整合性チェックは非常に重要です。そうでない場合、関連データを相関させないとテストは役に立たなくなります。(ほとんどの場合)