Hologres支持UPSERT操作,即在插入数据时如果主键存在重复的行数据,则对该数据执行更新或跳过操作。具体的语法格式是:INSERT INTO [ AS ] [ ( [, ...] ) ] VALUES ... ON CONFLICT DO UPDATE SET [, ...] [WHERE ];。
对于您上游业务库的多条数据变更在一个事物里的情况,需要注意的是,Hologres目前仅支持DDL的显式事务,并不支持单纯的DML事务,也不支持DDL和DML混合的事务。这意味着,尽管语法上可以通过多个DML语句组成的事务,但实际并不支持原子提交和回滚。因此,如果您的业务库在一个事物中有多个数据变更,那么这些变更不能保证全部成功或者全部失败,可能存在部分成功部分失败的情况。
此外,从Hologres V2.0版本开始,支持INSERT OVERWRITE存储过程,可以方便用户进行大批量数据的全量写入或者分区级数据批量写入。如果您的实例版本低于V2.0,建议您升级实例以使用此功能。