經常在批量導入數據的時候,我們需要剔除已導入的重複數據,如果採用查詢庫中是否已經存在該條紀錄,一般是不划算的,至少會多一次查庫的 操作。
其實數據庫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後面的語句。