spark写入关系型数据库的duplicateIncs参数使用

在看一段spark写数据到关系型数据库代码时,发现一个参数没有见过:

Scala 复制代码
df.write
      .format("org.apache.spark.sql.execution.datasources.jdbc2")
      .options(
        Map(
          "savemode" -> JDBCSaveMode.Update.toString,
          "driver" -> exportDriver,
          "url" -> exportUrl,
          "user" -> exportUserName,
          "password" -> exportPassword,
          "dbtable" -> targetTable,
          "useSSL" -> "false",
          "duplicateIncs" -> "",//需要更新的字段,不写全部根据主键更新
          "showSql" -> "true"
        )
      ).save()

那就是duplicateIncs,翻阅相关资料:

这应该是mysql 4.1之后的一个可用配置,比如:

Scala 复制代码
UPDATE table SET c=c+1 WHERE a=1;

如果是用insert语句,怎么达到相同的效果呢?(指定某个字段更新)

Scala 复制代码
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;  

当然前提是,这个表要有主键或唯一索引,这里是a字段。

还可以指定多个字段:ON DUPLICATE KEY UPDATE后面可以放多个字段,用英文逗号分割。

下面是表中更改(增加或修改)两条记录的例子:

Scala 复制代码
  INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)  
  ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);  
相关推荐
阿维的博客日记11 分钟前
图文并茂解释水平分表,垂直分表,水平分库,垂直分库
数据库·分库分表
happycao12326 分钟前
Flink 03 | 数据流基本操作
大数据·flink
Neituijunsir1 小时前
2024.09.22 校招 实习 内推 面经
大数据·人工智能·算法·面试·自动驾驶·汽车·求职招聘
wrx繁星点点1 小时前
事务的四大特性(ACID)
java·开发语言·数据库
小小娥子2 小时前
Redis的基础认识与在ubuntu上的安装教程
java·数据库·redis·缓存
DieSnowK2 小时前
[Redis][集群][下]详细讲解
数据库·redis·分布式·缓存·集群·高可用·新手向
-XWB-2 小时前
【MySQL】数据目录迁移
数据库·mysql
老华带你飞2 小时前
公寓管理系统|SprinBoot+vue夕阳红公寓管理系统(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·课程设计
我明天再来学Web渗透3 小时前
【hot100-java】【二叉树的层序遍历】
java·开发语言·数据库·sql·算法·排序算法
Data 3173 小时前
Hive数仓操作(十一)
大数据·数据库·数据仓库·hive·hadoop