Oracle可以通过将数组作为绑定变量传递来执行批量插入。然后,数据库为数组的每个成员执行单独的行插入:
http://www.oracle.com/technetwork/issue-archive/2009/09-sep/o59odpnet-085168.html
因此,如果我有一个数组:
string [] arr = {1,2,3}
我将此作为绑定到我的SQL:
插入my_table(my_col)值(:arr)
我最终在表格中输了3行。
有没有办法在PostgreSQL中执行此操作而无需修改SQL? (即我不想使用复制命令,显式多行插入等)
答案 0 :(得分:1)
您最近可以使用的是:
insert into my_table(my_col) SELECT unnest(:arr)
答案 1 :(得分:1)
PgJDBC支持COPY
,这是你最好的选择。我知道这不是你想要的,而且你必须使用不同的行表示令人沮丧,但这是你能得到的最好的。
那就是说,你会发现如果你准备一个语句然后是addBatch和executeBatch,你将获得非常可靠的性能。足够的,因此通常不值得关心使用COPY
。见Statement.executeBatch
。您可以使用几行长的简单函数在其上创建“数组绑定”。它不如服务器端数组绑定好,但它会做得很好。
答案 2 :(得分:0)
我不确定您要使用哪种语言,但在Java中,例如,可以使用Connection.createArrayOf()
。
相关问题/答案: error setting java String[] to postgres prepared statement
答案 3 :(得分:0)
不,你不能在PostgreSQL中做到这一点。
您必须使用多行INSERT
或COPY
语句。