Oracle-update-Anweisungen in einem batch-Modus

Muss ich laufen, ein paar relativ einfache SQL-update-Anweisungen zum aktualisieren einer einzelnen Spalte in einer Oracle-Tabelle mit 14,4 Millionen Zeilen. Eine Anweisung führt eine Funktion geschrieben in Java und der JVM läuft out of memory wie mache ich das update auf alle 14,4 Millionen Zeilen.

Haben Sie geschrieben, eine Art batch-PL/SQL-routine, die brechen können diese einfach aktualisieren, in Mengen von, sagen wir, 10K Datensätze pro batch? Ich weiß, dass wenn ich richte meine updates nach einer Reihe von Aufzeichnungen, es wird viel schneller gehen, und ich nicht genügend Arbeitsspeicher zur Verfügung. Ich bin sicher, es gibt eine einfache Möglichkeit, dies zu tun mit einem FOR loop und row_num aber ich bin nicht so viel Fortschritt.

Sind hier die beiden Aussagen, die ich ausführen müssen, die für jede charge von n Datensätze:

erste:

 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);

zweite:

update vr_location set usps_address = mylib.usaddress_utils.parse_address(usps_address);
InformationsquelleAutor Dylan | 2009-05-13
Schreibe einen Kommentar