1. 程式人生 > >mysql的insert for update用法

mysql的insert for update用法

  好久沒寫部落格了,洗完澡一時興起,小寫一篇記錄sql知識點吧。

       由於之前公司業務的變更,需要做一個歷史資料表資料遷移到新建的資料表中,剛被分配到這個任務時,馬上開啟歷史資料表的相關結構,一看懵逼了。需求大概是把原來的幾百張資料庫表(裡面大概有三四類表,由於資料量太大,都進行一定規則的分表)遷移到新建的資料庫表(也是採用一定規則分表)。

   第一階段,採用insert語法批量新增資料。

       由於資料表資料量太大了,業務變更也比較複雜,所以採用指令碼形式實現資料遷移。

  第二階段,這是重點,採用 insert for update用法

  原因是由於新表的某些列並不能在插入的時候直接拼接,由於後面再進行更新。一開始使用常規方法,一條條進行

update操作,發現如果一條條進行更新操作的話,會對資料庫進行大量的訪問,伺服器的負載和訪問量會壓力很大,這樣是很不合理的,後面就想通過批量更新的方法進行操作。

  示例,資料表為test,資料如下:

id

a

b

1

a1

b1

2

a2

b2

現在批量更新id1a列資料為“a11”,id2a列資料為“a22”。

執行的sql

# INSERT INTO test VALUES(1,’a11’,’b1’),(2,’a22’,’b2’) ON DUPLICATE KEY UPDATE a=VALUES(a),;

總結:mysql中的”insert into tablename values() on duplicate key update columnName = valueName;” 用於批量更新資料庫表的列資料是比較適用的。