Mysql批量insert重複數據的處理

經常在批量導入數據的時候,我們需要剔除已導入的重複數據,如果採用查詢庫中是否已經存在該條紀錄,一般是不划算的,至少會多一次查庫的 操作。

其實數據庫oracle或者mysql已經提供了處理重複數據的機制:
oracle:可以使用 merge into語法
mysql:可以使用ON DUPLICATE KEY UPDATE

首先創建一個唯一索引:

ADD UNIQUE INDEX uidx_v_a_m_id_mem (vote_id ASC, member_code ASC);

 insert into vote_activity_member ( vote_id, member_code, 
      member_name, vendor_name, contact_name, 
      contact_phone, sign_status, audit_status,  
      delete_flag, create_id, create_name, 
      create_time, modify_id, modify_name, 
      modify_time)
    values 

    ( 1, 'htd1000000', 
      'x', 'c', 'zxl', 
     '13265658562',0, 0, 
      0, 0,'zxl', 
      NOW(), 0, 'zxl', 
      NOW()),
       ( 1, 'xxx', 
      'w', 'w', 'zxl', 
      '13265658562',0, 
      0, 0,'zxl', 
      NOW(), 0, 'zxl', 
      NOW()) on duplicate key update modify_time =now()

on duplicate key update 會根據庫裏唯一索引的條件去檢測,如果已經存在了一條,那麼就不再insert而是執行update後面的語句。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章