当前位置: 首页 > 知识库问答 >
问题:

如何利用Java高效编制大数据映射表

孔逸春
2023-03-14

考虑我有两个表的场景,table_atable_b。我想创建第三个表table_c,它只是一个包含两列的映射表,table_atable_b的主键。表A和表B分别包含8000万条和1.5亿条记录。目前,我在DB2(即我的DB)中编写了一个存储过程,它将首先连接和选择两个表中的记录,并使用游标进行迭代。在这个迭代过程中,我将插入到第三个表中,并执行一个中间提交。

现在,这个存储过程运行了很长时间(大约5小时)来完成这个操作,因为在DB2存储过程中不可能插入多行(这是我所理解的)。通过一次获取记录并使用JDBC批处理从Java中插入,这样插入将在多行中工作,是否可以将其移到Java中。但是如何在Java中保存如此大的结果集而不获取OutOfMemoryError

谁能提出最好的方法。

更新:

DECLARE GLOBAL TEMPORARY TABLE  SESSION.TABLE_DGTT AS (
    select a.type_id as type_id,
            a.a_id as a_id,
           b.b_id as b_id
    from TABLE_A a
    inner join TABLE_B b on
    AND b.process_date = i_order_date
    AND b.tgt_date = CASE WHEN 
             a.tgt_date < i_order_date 
             THEN i_order_date ELSE a.tgt_date END
    where not exists ( select 1 from TABLE_C c where 
    a.type_id = c.type_id
    AND a.a_id = c.a_id) 
    AND a.process_date <= i_order_date  
    )                                      
    WITH NO DATA NOT LOGGED ON COMMIT PRESERVE ROWS ;  
    
    DECLARE C1 CURSOR FOR SELECT * FROM SESSION.TABLE_DGTT;
    
    LOAD FROM C1 OF CURSOR INSERT INTO TABLE_C NONRECOVERABLE;

共有1个答案

滑骞尧
2023-03-14

值得尝试使用ADMIN_CMD过程的LOAD命令,使用基于SELECT语句的游标,使用源表。它适用于大型数据加载。
如果您不熟悉加载实用工具,请使用nonrecoverable选项。最好阅读加载选项以了解其副作用。

 类似资料:
  • 我正在寻找一些与使用Cassandra数据库的spring boot数据相关的帮助。 在我的pom.xml中有以下依赖项。 我得到以下错误:Cassandra实体必须有@Table、@Persistent或@PrimaryKeyClass注释

  • 我有以下代码: 如果我想迭代Map,上面的代码工作得很好。但是现在我有这样的东西。 我想在映射中遍历映射,并获取它的键和值。我想得到key1、value1、key2、value2、key3、value3的值,依此类推。那我该怎么做呢?

  • 我有一个问题,希望有人能帮助我提高Java流API的知识。 我的服务通过RabbitMQ以如下数组的形式从另一个服务接收数据: 我需要对这些数据做的是将其收集到用户具有userId的列表和设备id的列表中。因此,从上面的数据来看,它应该是: 我确实有一个可行的解决方案,但它很笨拙 解决方案是: 如何对流执行相同的操作?谢谢

  • 本文向大家介绍如何利用FutureBuilder提高开发效率,包括了如何利用FutureBuilder提高开发效率的使用技巧和注意事项,需要的朋友参考一下 常见场景 展示请求按钮 用户点击按钮,显示loading 展示数据或者错误 抽象模式 展示请求按钮(初始状态) 用户点击按钮,显示loading(请求中状态) 展示数据或者错误 (结束状态(成功或失败)) 转换成程序语言 以上三种现实情况对应

  • 当前正在读取Head First Servlet JSP。我目前陷入了映射servlet。这可能是一个愚蠢的问题,但如何才能正确地映射servlet url模式呢?我正在使用eclipse mars,这是我第一次使用JSP/servlet。在创建动态web项目时,我总是检查generate web xml 这是默认web.xml中的内容 它使用这个来运行 但当我将其添加到显示名称下方时 它给我一个

  • base64编码 # base64_b64encode.py import base64 import textwrap # Load this source file and strip the header. with open(__file__, 'r', encoding='utf-8') as input: raw = input.read() initial_data