我正在使用Java,Spring和PostgreSQL开发一个应用程序。我使用Spring-JDBC作为数据库层。
在我的Java应用程序中,我有大约10,000行需要插入临时表中。导入它们的最快方法是什么?
我已经尝试过:
create temporary table my_table on commit drop;
with data as (values (...), (...), ...) -- all 10.000 rows enumerated
insert into my_table select * from data;
但是这会失败,因为查询变得太大而无法解析。
我应该简单地发送较小的批次,还是有更聪明的方法将数据流式传输到数据库?
更新
我在做什么:
在数据库中,有一个表,比方说,'外部实体'。每隔几个小时,我就会得到一个包含完整的当前实体集的更新(通过ActiveMQ代理)。这个集合需要在我的数据库中。我做了以下事情:
我不能简单地截断我的实际表并直接插入到实际的表中,因为该表的外部约束和该表上的触发器。换句话说,我只反映实际的变化。
答案 0 :(得分:0)
尝试使用copy from stdin
。这将是放置10K行的最聪明,最快捷的方式
http://pgpen.blogspot.ie/2013/05/using-copy-in-your-jdbc-code.html