2016-11-22 1 views
-1

ausführen Ich habe TOAD, Oracle 11g verwendet.Skript von TOAD

Ich möchte Batch-Insert-Skript erstellen.

Beispiel

INSERT INTO tbl_name (a,b,c) 
VALUES(1,2,3),(4,5,6),(7,8,9); 

Aber, wenn ich den Export Dataset verwenden - Anweisungen einfügen, die ich erhalten:

Insert into tbl_name (1, 2, 3) 
    Values (1, 2, 3); 

Insert into tbl_name (1, 2, 3) 
Values (1, 2, 3); 

Also, es dauert eine lange Zeit, weil es zu viele Zeilen sind.

Gibt es einen Weg?

Danke!

+1

Oracle unterstützt keine mehrzeiligen Insert-Anweisungen. Der einzige Weg, dies zu tun, ist die Verwendung mehrerer Einfügungen. Die Syntax Ihrer ersten Anweisung funktioniert nicht mit Oracle. –

+0

ah ... okay. Danke! – BaeDa

Antwort

1

Leider Oracle nicht unterstützt als mutlitple Zeilen mit den Werten Klausel einzufügen in

INSERT INTO tbl_name (a,b,c) VALUES (1,2,3),(4,5,6),(7,8,9); 

Sie haben würde dies in einem Einsatz für Oracle wählen konvertieren:

INSERT INTO tbl_name (a,b,c) 
    SELECT 1,2,3 FROM DUAL 
    UNION ALL 
    SELECT 4,5,6 FROM DUAL 
    UNION ALL 
    SELECT 7,8,9 FROM DUAL; 

oder schreiben separate insert-Anweisungen, wie Sie bereits selbst gezeigt haben.

0

Ich habe eine tägliche Prüfung, wo ich von ein paar Zeilen auf ein paar tausend aktualisieren muss. Ich umgebe den Code mit 'Begin/commit/end' und es wird in wenigen Sekunden ausgeführt, anstatt in den Minuten, die benötigt werden, um die Updates nacheinander auszuführen.

begin 
update my_audit set audit_date = sysdate, audit_by = trim(q'{DBA for DLD}'), audit_comments = trim(q'{ RFC-009999 Fix blah blah blah for 1000 entries }') , audit_complete = 'Y' where row_id = 4754973; 
    ... 998 update statements here ... 
update my_audit set audit_date = sysdate, audit_by = trim(q'{DBA for DLD}'), audit_comments = trim(q'{  RFC-009999 Fix blah blah blah for 1000 entries }') , audit_complete = 'Y' where row_id = 4755973;  
commit; 
end; 

Ich habe in ein Speicherproblem laufen, wenn ich diese mit 50.000 Zeilen zu tun versucht. Ich habe es einfach in mehrere Begin/Commit/End Blöcke aufgeteilt und neu gestartet, und alles hat gut funktioniert.

Verwandte Themen