go 操作数据库的库,没有像 java jdbc 那样得到众多数据库厂家的广泛支持。例如 golang 操作 oracle 数据库需要借助 oracle client 的支持。对于批量操作数据,众多golang 封装的库,都没有提供类似 java jdbc 中 PreparedStatement 的操作。鉴于此,从数据库提供的语法层面来解决,不失为一种考虑。
以 oracle 为例,可以使用 in,union ,union all ,等语法拼接sql 语句。[注:单条语句长度要适当]
- 前置条件:假设表 T1 有两个字段 id(数字类型),name,(字符类型)
- 要根据具体业务选择 union 或 union all
- eg-insert
insert into T1 select 1,"value1" from dual union all
insert into T1 select 2,"value2" from dual union all
...
- eg-delete
delete from T1 where id in(1,2,... 依次拼接);
- eg-update
update T1 set name=name||'test' where id in(1,2,... 依次拼接);
这种方式拼接方式局限也很明显,有拼接参数的负担,拼接参数也不是无限长,要根据实际业务考虑截断。暂时没有想到其他更优的方法。