RDS for PostgreSQL 批量更新删除或插入数据

数据库关系型数据库技术服务知识库
前言

在 PostgreSQL 中,我们推荐使用批量操作来进行插入,更新和删除数据,这样可以减少客户端与数据库的交互次数,进而提高数据库的吞吐量。

批量插入数据

1.使用insert into...select的方式

dbtest=# create table test(id serial, login varchar(10),time_now date);
CREATE TABLE

dbtest=# INSERT INTO test (id, login ,time_now) SELECT GENERATE_SERIES(1,10000),'dbtest',NOW();
INSERT 0 10000

dbtest=# select * from test limit 10;
 id | login  |  time_now  
----+--------+------------
  1 | dbtest | 2022-01-11
  2 | dbtest | 2022-01-11
  3 | dbtest | 2022-01-11
  4 | dbtest | 2022-01-11
  5 | dbtest | 2022-01-11
  6 | dbtest | 2022-01-11
  7 | dbtest | 2022-01-11
  8 | dbtest | 2022-01-11
  9 | dbtest | 2022-01-11
 10 | dbtest | 2022-01-11
(10 rows)

2.insert 后使用多个values

dbtest=# INSERT INTO test (id,login,time_now) VALUES (1001,'wanyix',NOW()), (1002,'wanyix',NOW()), (1003,'wanyix',NOW()); 
INSERT 0 3

3.copy 命令插入效率更高

简单的使用如下:

dbtest=# COPY test FROM stdin delimiter ',' csv header;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself, or an EOF signal.
>> 1006,liwangz,2022-01-11
>> 1007,mezhng,2022-01-11
>> \.
COPY 1
批量更新数据

我们可以使用 update 后加多个value的方式,示例如下:

dbtest=# UPDATE test SET login=tmp.login from (VALUES (1,'tianzhou'),(2,'tianzhou'),(6,'tianzhou')) AS tmp (id,login) WHERE test.id=tmp.id; 
UPDATE 3

dbtest=# select * from test where id in(1,2,6);
 id |  login   |  time_now  
----+----------+------------
  1 | tianzhou | 2022-01-11
  2 | tianzhou | 2022-01-11
  6 | tianzhou | 2022-01-11
(3 rows)
批量删除数据
dbtest=# DELETE FROM test USING (VALUES (3),(4),(5)) AS tmp(id) WHERE test.id=tmp.id;
DELETE 3

如果您有删除全表的需求,请直接使用truncate 而不是delete。 如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

所属团队号:
相关资源
大模型解决方案白皮书:社交陪伴场景全流程落地指南
随着大模型技术持续突破,AI正加速重塑社交娱乐的形态与体验。其中,陪伴式聊天因用户黏性强、互动频次高,成为大模型商业化落地的关键赛道。随着模型能力跃升至万亿参数级,AI从工具属性正迈向情感交互生态,现象级产品的诞生条件逐渐成熟。 本白皮书聚焦AI陪伴聊天应用开发,面向“从何起步、如何落地”的新手困惑,系统拆解从需求定义到产品上线的关键流程。我们结合工程化实践路径,打造模块化知识体系与渐进式开发框架,帮助开发者在30天内完成从技术认知到产品原型的跃升,快速构建具备基础交互能力的Web或App应用,迈出大模型
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论