正如文档所述,在扩展查询协议中,“查询字符串 包含在Parse消息中的不能包含多个SQL 语句”。
所以在准备好的声明中支持批处理,我认为唯一的办法就是 提前确定批量大小,然后创建相应的 准备好的陈述,例如
鉴于批量大小固定为3,请准备以下声明:
-- create table foobar(a int, b text);
insert into foobar values($1, $2), ($3, $4), ($5, $6);
然后,这个准备好的语句必须与3组参数绑定。
限制很明显:批量大小是固定的,所以如果你需要 做批量大小为4,之前准备好的声明是没用的 你需要重新创建它。
另一方面,在JDBC中,您似乎只需要准备 以下声明:
insert into foobar values($1, $2);
然后重复调用addBatch(),直到您认为批量大小足够。
postgresql jdbc驱动程序转换为什么是最终语句?我 好奇。
我不熟悉jdbc,虽然我检查了驱动程序源代码 代码,但我仍然无法理解。
有人知道答案吗?感谢。