批量更新
- 常用的批量更新为 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,搭配上合适的函数框架,可以很轻松实现批量操作数据。