postgre 批量数据做新增、修改、删除处理

本文介绍了一种优化的大数据批量插入方法,通过使用SQL的VALUES子句和UNION操作,实现数千乃至数万条数据的一次性高效批量新增,显著提高了数据库操作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.场景:对于几千上万条数据新增时,一般使用for循环一条一条进行 insert into 新增。但是这样不仅速度慢,还吃数据资源。

所以:修改成一次性的批量新增处理。

例如:

(1).以下这段语句

CREATE TABLE tmp_fep  as 
SELECT feeIds,'1' as xmid ,'1' as b
FROM  (VALUES ('4'),('5')) AS cs (feeIds);

 

select  *
FROM (VALUES 
('计算机软件'),
('通信')
) as cs (fee_id)

结果:

解释:(VALUES ('4'),('5')) AS cs (feeIds) 相当于创建一张临时表,里面就只有“feeIds”这一个字段属性,其中格式要注意。

(2).现在想要再新增多条数据:

INSERT INTO tmp_fep
SELECT feeIds,'2' as xmid ,'2' as b
FROM  (VALUES ('7'),('8')) AS cs (feeIds);

结果:

(3).针对于多类型新增数据时,可以用以下处理:


CREATE TABLE tmp_fep  as 
--INSERT INTO tmp_fep
SELECT feeIds,'2' as xmid ,'2' as b
FROM  (VALUES ('7'),('8')) AS cs (feeIds)
UNION 
SELECT feeIds,'3' as xmid ,'3' as b
FROM  (VALUES ('7'),('8')) AS cs (feeIds);

结果:

假设:你有1万条数据要新增,但是他们都要新增不同得6个类型,总共就是6万条数据,那就得给这1万条数据

循环6次,就可以用上面得语句,“union” 6次,就可以做到一次性将6万条数据一次完成新增。

结束。

2.现在应用到业务代码逻辑中,

场景:假设有一万条数据,每条数据要配6个类型,那就等于我要新增6万条数据,那就可以用 6次 “union”得语句来做。

Service层:

myBatis sqlMapp:

<insert id="savePerformanceFeeProjectList">
   INSERT INTO performance_fee_project_role(
   performance_id,
   fee_project_id,
   accrual_type
   )
   <foreach collection="performanceFeeProjectList" item="pfp" separator=" union ">
      SELECT
      #{pfp.performanceId},
      fee_id,
      #{pfp.accrualType}
      FROM (VALUES ${pfp.feeProjectIds} ) as cs (fee_id)
   </foreach>
</insert>

 

3.删除:

逻辑跟新增一样。

4.更新:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值