web-dev-qa-db-ja.com

SQLテーブルにダミーデータを入力する最も簡単な方法

SQLテーブルにダミーデータを入力する最も速い方法は何ですか?

さまざまな種類(int、bit、varcharなど)の約40のフィールドを持つ広いテーブルがあり、パフォーマンステストを行う必要があります。 SQL Server 2008を使用しています。

ありがとうございました!

34
Alex

SQLデータジェネレーター RedGateによる

ワンクリックでのデータ生成

列とテーブル名に基づく現実的なデータ

必要に応じてデータをカスタマイズできます

時間のかかる面倒な作業を排除

SQL Server 2008の完全サポート

19
SQLMenace

無料のGNUライセンスのランダムカスタムデータジェネレーターを推奨 http://www.generatedata.com/

48
wittrup

答えは遅いですが、このスレッドの他の読者には役立ちます。他のソリューションとは別に、SSMSまたはカスタムSQLインポートスクリプト、プログラムを使用して.csvファイルからデータをインポートすることをお勧めします。これを行う方法についての段階的なチュートリアルがあるので、それをチェックアウトすることをお勧めします: http://solutioncenter.apexsql.com/how-to-generate-randomized-test-data- from-a-csv-file /

SSMSまたはカスタムSQLインポートスクリプトを使用した.csvファイルのインポートは、SQL挿入を手動で作成するよりも簡単ですが、チュートリアルで説明されているように、いくつかの制限があることに注意してください。

数千行を入力する必要があり、.csvファイルに数百行のデータが含まれている場合、それだけでは不十分です。回避策は、同じ.csvファイルを必要になるまで繰り返しインポートすることです。この方法の欠点は、ランダム化せずに、同じデータを持つ行の大きなブロックを挿入することです。

このチュートリアルでは、 ApexSQL Generate と呼ばれるサードパーティのSQLデータジェネレーターの使用方法についても説明します。このツールには、インポートされた.csv形式のファイルから大量のランダム化されたデータを生成する統合機能があります。アプリケーションは完全に機能する無料の試用版を備えているので、ダウンロードして試してみて、機能するかどうかを確認できます。

10
TodorS

INSERTの後にGo 1000が必要なのは、次のように1000回入力する場合だけです。

INSERT INTO dbo.Cusomers(Id, FirstName, LastName) VALUES(1, 'Mohamed', 'Mousavi')
GO 1000

同じ行が1000個あるテーブルを作成します。

別の解決策は、テーブルの最初の行にデータを入力してから、最初の行を何度も繰り返すことによってテーブルの次の行を埋めることです。つまり、テーブル自体を埋めることになります。

INSERT INTO dbo.Customers
SELECT * FROM dbo.Customers 
GO 10

1つ以上の列がIDである場合(自動インクリメンタルの場合、一意の値を受け入れることを意味します)、たとえば、dbo.CustomerのIDがIDの場合、クエリは次のようになります。

INSERT INTO dbo.Customers
SELECT FirstName, Last Name FROM dbo.Customers
GO 10

の代わりに:

INSERT INTO dbo.Customers
SELECT Id, FirstName, Last Name FROM dbo.Customers
GO 10

そうでなければ、このエラーが発生します:

An explicit value for the identity column in table 'dbo.Customers' can only be specified when a column list is used and IDENTITY_INSERT is ON.

注:これは一種の算術の進行なので、少し続くので、GOの前に大きな数を使用しないでください。

もう少し複雑なテーブルを作成したい場合は、単純なクエリを実行して次の手順に従うことで、今度は同じ方法でそれを実現できます。

  1. 行数が非常に多いテーブルの1つを選択します(dboなど)。

  2. それを右クリックしてScript Table as > Create To > New Query Editor Windowを選択します

  3. 新しいテーブルにdbo.CustomersTestなどの別の名前を付けます。これで、クエリを実行して、dbo.Customersと同様の構造を持つ新しいテーブルを作成できます。

注:Identityが提出されている場合は、それをIdentity Specification to Noに変更してください。新しいテーブルには、元のテーブルのデータを繰り返し入力する必要があるためです。

  1. 次のクエリを実行すると、1000回実行されます。これを多かれ少なかれ変更することができますが、コンピューターのハードウェアに基づいてそれが持続する可能性があることに注意してください。

INSERT INTO [dbo].[CustomersTest] SELECT * FROM [dbo].[Customers] GO 1000

  1. しばらくすると、ダミー行が入ったテーブルができました!

@SQLMenaceが述べたように、RedGate Data Generatorはそれを実行するのに非常に優れたツールであり、費用は$ 369ですが、14日間の試用チャンスがあります。

良い点は、RedGateが外部キーを識別するため、クエリにJOINを適用できることです。

すべての列がどのように入力されることになっているのかを決定できるオプションの束があります。たとえば、「Department」という名前の列がある場合、奇妙なことで満たされていません文字、「技術」、「Web」、「顧客」などの表現で埋められます。正規表現を使用して、選択した文字を制限することもできます。

テーブルに10,000,000を超えるレコードを入力しました。これは素晴らしいシミュレーションでした。

9
Mohammad Musavi