关系数据库PostgreSQL版

批量更新、删除或插入数据

2024-05-23 07:26:48
本文介绍如何批量更新、删除或插入数据。

批量更新

  • 常用的批量更新为 update …… set …… from(values()) as ……,将values的值构成虚表,统一更新。

    update table1 set col2=tmp.col2 from (values (XXX,'XXX'),(XXX,'XXX'),(XXX,'XXX')) as tmp (col1,col2) where test.col1=tmp.col1;

批量删除

  • 使用truncate,直接将表所有数据行截断,无法进行回滚。

    truncate table_name;
  • drop,也是直接将表全部删除,不可回滚。不同在于,drop会将整个表数据与表结构全部删除,truncate会保留表结构,即表可以继续使用。

    drop table_name;

批量插入

  • 使用 insert into ... select的方法,对数据源限制较多。

    insert into table1(col1, col2) select col1 , col2 from table2;
  • 使用insert into … values (), () … ,SQL编写麻烦,数据量多时,较难检查其正确性。

    insert into table_name(col1, col2) values (XXX, 'XXX'), (XXX, 'XXX');

使用三方工具或者编程语言实现批量处理(推荐)

使用SQL编写批量数据处理其实较为繁琐,原因是SQL语句较为冗余,也不便于检查错误。因而生产中最为常用的方式,是使用其他编程语言的数据库驱动,利用该语言的开发便利性,批量导入数据,例如java语言连接数据库使用的jdbc,搭配上合适的函数框架,可以很轻松实现批量操作数据。


wsHEHkLpR.9z