読者です 読者をやめる 読者になる 読者になる

SQL Serverに大量のテストデータを登録するときのコツ

アプリケーションのテストで、データベース(SQL Server)に十数万件のテストデータを登録する必要がありました。
SQLファイルに自動でINSERT文を生成して、SQL Server Management Studioでそのクエリを実行すると、メモリ不足のエラーになり、データ登録ができずに困っていたのですが、INSERT文のあとに「GO」を付けるとうまくいきました。


以下のようにひたすら、INSERT文を書き続けると、メモリ不足でエラーになる。

INSERT INTO テーブル名 VALUES(1, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(2, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(3, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(4, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(5, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(6, "Japan", 0, "TEST");
・
・
・
・(何十万行のINSERT文)


そこで、以下のように「GO」を付けるとメモリ不足にならずクエリが成功する。

INSERT INTO テーブル名 VALUES(1, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(2, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(3, "Japan", 0, "TEST");
GO
INSERT INTO テーブル名 VALUES(4, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(5, "Japan", 0, "TEST");
INSERT INTO テーブル名 VALUES(6, "Japan", 0, "TEST");
GO
・
・
・
・(何十万行のINSERT文)


まぁ、「GO」を付けることで、1つのステートメントが終了しましたよ〜と通知するみたいですね。
「GO」を付けないとずっと1つのステートメントが続いてしまって、メモリが解放されずにどんどん圧迫してしまい、失敗していたみたいです。


知らないとちょっと困るので、メモ。