【发布时间】:2010-10-26 00:04:59
【问题描述】:
我需要运行几个相对简单的 SQL 更新语句来更新包含 1440 万行的 Oracle 表中的单个列。一条语句运行一个用 Java 编写的函数,当我对所有 1440 万行进行更新时,JVM 内存不足。
您是否编写了一种批处理 PL/SQL 例程,可以将这个简单的更新分解为每批 10K 条记录的集合?我知道如果我可以在一堆记录之后提交我的更新,它会更快,而且我不会耗尽内存。我确信有一种简单的方法可以使用 FOR loop 和 row_num 来做到这一点,但我没有取得太大进展。
这是我需要为每批 n 条记录运行的两条语句:
第一个:
update vr_location l set l.usps_address=(
select mylib.string_utils.remove_duplicate_whitespace(
house_number || ' ' || pre_street_direction || ' ' || street_name || ' ' ||
street_description || ' ' || post_street_direction)
from vr_address a where a.address_pk=l.address_pk);
秒:
update vr_location set usps_address = mylib.usaddress_utils.parse_address(usps_address);
【问题讨论】: