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);  
相关推荐
吃糖的小孩2 小时前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
手可摘星辰7772 小时前
一次线上FlinkCDC异常排查复盘
大数据·flink
大大大大晴天2 小时前
Hudi技术内幕:Metadata Table原理与实践
大数据
笃行35019 小时前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行35019 小时前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行35020 小时前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
大大大大晴天1 天前
Hudi技术内幕:深入解析Index索引机制
大数据
阿里云大数据AI技术1 天前
Flink Forward Asia 2026 深圳启幕:Agentic Streaming for AI,开启实时智能新范式
大数据·flink
SelectDB2 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc