两种常用方式
- replace into
replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');
- insert into ... on duplicate key update ...
INSERT INTO mysql_sink_test_1 ( id, cnt, max_ts )
VALUES
( 'sensor_9', 9, 90000000000 )
ON DUPLICATE KEY UPDATE cnt = 6,
max_ts = 10000000000;
插入的时候,回先根据主键id 查询是否有重复,有则更新,无则新增.
适合于Spark DataFrame遍历更新mysql操作
具体参考官方文档:
https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
replace into 和 insert into on duplicate key update的不同在于:
replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值,用这个要悠着点否则不小心清空大量数据可不是闹着玩的。
insert into 则是只update重复记录,不会改变其它字段。
参考:https://blog.csdn.net/Michaelwubo/article/details/80930468