44

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

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

4

5 に答える 5

58

無料のGNUライセンスのランダムカスタムデータジェネレーターをお勧めしますhttp://www.generatedata.com/

于 2013-08-21T00:52:13.020 に答える
24

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

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

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

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

面倒な作業の時間を排除します

SQLServer2008の完全サポート

于 2010-05-24T19:28:43.307 に答える
15

Go 1000INSERTの後で、次のように1000回入力するだけで済みます。

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

1000個の同じ行を含むテーブルが作成されます。

もう1つの解決策は、テーブルの最初の行にデータを入力し、最初の行を何度も繰り返すことでテーブルの次の行を埋めることです。つまり、テーブルを単独で埋めることになります。

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. dbo.Customersのように、行数が非常に多いテーブルの1つを選択します。

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

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

注:IDがファイル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」という名前の列がある場合、奇妙なもので埋められません。文字には、「Technical」、「Web」、「Customer」などの表現が含まれています。正規表現を使用して、選択した文字を制限することもできます。

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

于 2017-05-13T06:46:16.117 に答える
10

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

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

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

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

于 2015-12-11T09:53:44.947 に答える
-2

http://filldb.info/dummy/が最適です。完全な設定、生成する行数の選択、「実際の」ダミーデータ、無料。

私はこの条件でこれ以上効果的またはより良いものを見たことがありません(無料!!)

于 2022-03-05T08:55:55.827 に答える