MySQLでbulk insert + on duplicate key updateしたい
·1 分で読めます
MySQLでINSERT INTO hoge VALUES (...), (...), (...)のbulk insertでon duplicate key update(すでにレコードがあったらUPDATEで上書きする)って併用できるのかな?っていうのが気になったので調べてみたらできるみたい。VALUES関数というその目的のためだけに存在するような関数を使う。
こんな感じでテーブル作って
CREATE TABLE users (
name VARCHAR(255) NOT NULL,
age TINYINT UNSIGNED NOT NULL,
PRIMARY KEY (name)
) ENGINE=InnoDB;データをINSERTして
INSERT INTO users VALUES
('akuwano', 25), ('oinume', 24), ('oranie', 23);
SELECT * FROM users;
+---------+-----+
| name | age |
+---------+-----+
| akuwano | 25 |
| oinume | 24 |
| oranie | 23 |
+---------+-----+INSERT ... ON DUPLICATE KEY UPDATEで重複したレコードがあった場合に全てアップデートされるかな?
INSERT INTO users VALUES
('akuwano', 15), ('oinume', 14), ('oranie', 13)
ON DUPLICATE KEY UPDATE age = VALUES(age);
mysql> SELECT * FROM users;
+---------+-----+
| name | age |
+---------+-----+
| akuwano | 15 |
| oinume | 14 |
| oranie | 13 |
+---------+-----+された!!
- 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,菊池研自,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/11/25
- メディア: 大型本
- この商品を含むブログ (7件) を見る
関連記事
Duplicating a MySQL table schema and data
2015-09-04
RDS(MySQL)のバイナリログはすぐ消えるから注意
2015-05-29