考虑我有两个表的场景,table_a
和table_b
。我想创建第三个表table_c
,它只是一个包含两列的映射表,table_a
和table_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;
值得尝试使用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