【问题标题】:Approach Suggestion Required : Database insert from 1 db to another需要的方法建议:数据库从 1 db 插入到另一个
【发布时间】:2014-07-23 06:15:58
【问题描述】:

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

DB1 - JDBC 连接 - 选择查询

DB2 - 通过 Hibernate - 插入查询

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

现在我的问题是:我是否应该在 1 中获取 35K 记录(从 User 中选择 *)并创建 35K 实体 obj 并一一存储在 DB2 中。在这种情况下...我关心的一点是内存以及如果发生异常(例如 db connection failed with DB2)时如何处理。

我的感觉是,如果有什么方法可以选择 200 条记录并存储这 200 条记录等等。

请建议。

【问题讨论】:

    标签: java database hibernate


    【解决方案1】:

    你可能想用这个:

    Statement.setFetchSize(int rows)
    

    该功能在处理类似问题的问题中进行了解释: What does Statement.setFetchSize(nSize) method really do in SQL Server JDBC driver?

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多