方法建议要求:数据库从1 db插入到另一个db

时间:2014-07-23 06:15:58

标签: java database hibernate

我在两台不同的机器上有两个数据库。假设DB1和DB2

DB1 - JDBC连接 - 选择查询

DB2 - 通过Hibernate - 插入查询

在DB1中,有一个表用户,其中存在35K记录。我需要从Java JDBC获取这些数据并将数据存储在hibernate实体对象中。

现在我的问题是:我应该在1中获取35K记录(从用户选择*)并创建35 K实体obj并在DB2中逐个存储。在这种情况下......我的关注点是内存以及如果发生异常,如DB2连接失败,如何处理。

我觉得如果有任何方法可以选择200条记录并存储200条记录,等等。

Plz建议。

2 个答案:

答案 0 :(得分:0)

你可能想要使用这个:

Statement.setFetchSize(int rows)

在这个问题中解释了功能,它解决了类似的问题: What does Statement.setFetchSize(nSize) method really do in SQL Server JDBC driver?

答案 1 :(得分:0)

如果你有一点时间并且有兴趣学习,你可以看看: http://projects.spring.io/spring-batch/

Spring Batch具有块和机制的概念,用于存储作业自身数据库的状态。如果您的传输作业崩溃,那么它可以从最后一个块恢复。您还可以对作业进行分区并进行分发。如果您熟悉Spring,它真的很容易使用。

一般来说,你不应该将所有行加载到内存中并一次性传输它们,这有可能像你已经指出的那样破坏(OOM,事务日志)。当一切都是正确的时候,分成专用的临时表然后切换数据是一种常见的解决方案。

如果它只是一次运行并且你只期望35K的记录,那么将它们复制到一个大块中是可以的,而且很可能不值得付出额外的努力。