【 TiDB 使用环境】生产环境
【 TiDB 版本】v6.5.6
【TiSpark 版本】3.3_2.12-3.2.3
TiSpark 从 3.1.x 版本开始支持通过 Spark SQL 写入数据到 TiKV,包括 Insert 和 Delete 操作
可以使用 Spark SQL 删除 TiKV 数据的语法如下:
spark.sql(“use tidb_catalog”)
spark.sql(“delete from ${database}.${table} where xxx”)
写入和删除我都测试了是可以的,有办法可以在写入的时候如果唯一键重复就更新吗?或者类似 insert overwrite partition 的方式
标准的SQL肯定是不支持的
我在执行 sql 之前加了 set replace=true; 可以做到主键相同就更新了,但是有了新的问题,如果有字段是 datetime 类型,就会报错
Caused by: org.tikv.common.exception.ConvertNotSupportException: do not support converting from java.time.Instant to com.pingcap.tikv.types.DateTimeType
at com.pingcap.tikv.types.AbstractDateTimeType.convertToMysqlDateTime(AbstractDateTimeType.java:134)
at com.pingcap.tikv.types.DateTimeType.doConvertToTiDBType(DateTimeType.java:53)
at com.pingcap.tikv.types.DataType.convertToTiDBType(DataType.java:399)
at com.pingcap.tispark.utils.WriteUtil$.$anonfun$sparkRow2TiKVRow$2(WriteUtil.scala:64)