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つのステートメントが続いてしまって、メモリが解放されずにどんどん圧迫してしまい、失敗していたみたいです。
知らないとちょっと困るので、メモ。