繁体   English   中英

将数据从应用程序(Java)导入临时表的最快方法是什么?

[英]What is the fastest way to import data from application (Java) into temporary table?

我正在使用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代理)。 这个集合需要在我的数据库中。 我做以下事情:

  • 插入临时表
  • 将新实体从临时表复制到实际表
  • 从实际表中删除旧实体
  • 更新实际表中更改的实体

我不能简单地截断我的实际表并直接插入到实际的表中,因为该表的外部约束和该表上的触发器。 换句话说,我只反映实际的变化。

尝试使用copy from stdin 这将是放置10K行的最聪明,最快捷的方式

http://pgpen.blogspot.ie/2013/05/using-copy-in-your-jdbc-code.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM