SQLServerで大量データを作成する(その1)

久しぶるにSQLServerを触った見た。
大量のテストデータを作成する方法を考えてみた。

その1.ループでぐるぐる回す方法
その2.倍々方式

その2の倍々方式の方が、2,3割高速化できた。しかし、コードが複雑になるかな。

以下、その1の単純に追加したい件数ループさせてデータを追加していく方法。

DECLARE @StartTime datetime -- 処理開始時刻保存用変数
SET @StartTime = GETDATE() -- 処理開始時刻設定
-----

declare @cntStart int;
declare @cntAdd int;
declare @cntEnd int;
declare @i int;

set @cntStart = 20001;			--開始番号を入力
set @cntAdd = 10000;	--追加する件数を入力

set @cntEnd = @cntStart + @cntAdd;
set @i = @cntStart

while @i < @cntEnd
begin
	insert into Employees (LastName, FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address, City, Region, PostalCode, Country, HomePhone, Extension, Photo, Notes, ReportsTo, PhotoPath)
	select 'loop' + right('0000' + convert(varchar,@i), 5), FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address, City, Region, PostalCode, Country, HomePhone, Extension, Photo, Notes, ReportsTo, PhotoPath
		from Employees where EmployeeID = 1

	print @i;
	set @i = @i + 1;
end

-----
SELECT CONVERT(varchar,GETDATE()-@StartTime,114) AS 実行時間 -- 処理時間を出力

コードの最初と最後は、処理時間を計測するためのもので、こちら(SQLの実行時間をミリ秒単位で計測する方法)を参考にしました。

One thought to “SQLServerで大量データを作成する(その1)”

  1. ExcelでSQLServerのデータを取得/更新するなら、ExcelDBToolをお勧めします。
    テーブルのデータをエクセルに取得、更新、削除することだけではなく、複数のSQLを実行して、結果を
    一括Excelの各シートに出力することもできます。データ作成の機能を使って、
    氏名、住所、電話など60種類以上のダミーデータも作成できます。
    作成したデータを直接DBに登録して、シート名とテーブル名が一致すれば、
    一括で複数テーブルのデータもExcelに取得できます。
    詳しくは下記サイトをご参照ください。

    http://www.superdbtool.com
    ベクターからもダウンロードできます。
    SQLServer以外、Postgre,DB2,Sybase,MySQL,Oracle,Sqliteもご利用できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です