MySQLでバッチ挿入(一括INSERT)を行う方法をわかりやすく解説
MySQLでバッチ挿入(一括INSERT)を行う方法
MySQLで複数のレコードを一度に挿入する「バッチ挿入(一括挿入)」を行うには、INSERT文のVALUES句の後に、各行の値を括弧( )で囲み、カンマ(,)で区切って列挙します。この方法を使えばINSERT文を何度も実行する必要がなく、データベースとの通信回数が減るため、大量データを扱う際のパフォーマンス向上も期待できます。
実際の例を見ていきましょう。まずはテーブルを作成します。
1. テーブルの作成
以下は、テーブルを作成するためのCREATE文です。
mysql> CREATE table MultipleRecordWithValues
-> (
-> id int,
-> name varchar(100)
-> );
Query OK, 0 rows affected (0.88 sec)2. バッチ挿入の基本構文
バッチ挿入の基本構文は以下のとおりです。
INSERT into yourTableName values(column1,column2,....N),(column1,column2,....N),(column1,column2,....N),...........N;
3. 実際にレコードを一括挿入する
上記の構文に従って、複数のレコードを一括挿入してみます。
mysql> insert into MultipleRecordWithValues values(1,'John'),(2,'Carol'),(3,'Bob'),(4,'Smith'); Query OK, 4 rows affected (0.16 sec) Records: 4 Duplicates: 0 Warnings: 0
「4 rows affected」と表示されていることから、4件のレコードが正常に挿入されたことがわかります。
4. 挿入結果の確認
テーブルにすべてのレコードが正しく登録されているかを確認するには、SELECT文を使用します。
mysql> select *from MultipleRecordWithValues;
実行結果は以下のとおりです。
+------+-------+ | id | name | +------+-------+ | 1 | John | | 2 | Carol | | 3 | Bob | | 4 | Smith | +------+-------+ 4 rows in set (0.00 sec)
このように、VALUES句に複数の行をカンマで区切って指定するだけで、1回のSQL文で大量のデータを効率的に挿入できます。レコード数が多い場合、1件ずつINSERT文を実行するのに比べて処理時間を大幅に短縮できるため、データ移行や初期データ投入などのシーンでぜひ活用してみてください。
-
MySQLでAUTO_INCREMENT(自動インクリメント)列をリセットする方法
MySQLで自動インクリメント(AUTO_INCREMENT)列の値をリセットしたい場合は、TRUNCATE TABLEコマンドを使用します。テーブルをTRUNCATEすると、すべてのデータが削除されるとともに、AUTO_INCREMENTのカウンターも初期化されます。その後、新しくレコードを挿入すると、IDは再び1から採番されます。1. テーブルを作成するまず、AUTO_INCREMENT列を持つテーブルを作成します。mysql> create table DemoTable1888 ( Id int NOT NULL AUTO_INCREMENT, PRIMA
-
MySQLでINSERT前にトリガーを使って挿入を停止・キャンセルする方法
BEFORE INSERTトリガーで挿入を停止する方法 MySQLでは、BEFORE INSERTトリガーとSIGNAL SQLSTATEを組み合わせることで、INSERT処理を実行前に中断(キャンセル)できます。トリガー内で条件をチェックし、条件を満たした場合にエラーを発生させることで、その挿入自体が取り消されます。 基本構文 構文は以下の通りです。 delimiter // create trigger yourTriggerName before insert on yourTableName FOR EACH ROW BEGIN yourStateme