Drei Code-Beispiele für das Einfügen mehrerer Zeilen in Oracle-Datenbanken
Wie füge ich mit einem einzigen INSERT-Befehl mehrere Zeilen in eine Oracle-Datenbank ein? Dieser Artikel bietet hierfür Tipps und Code-Beispiele.
Wie füge ich mit einem einzigen INSERT-Befehl mehrere Zeilen in eine Oracle-Datenbank ein? Ziel ist es, fünf Zeilen in eine Tabelle mit nur einem Befehl einzufügen, statt dafür fünf INSERT-Anweisungen schreiben zu müssen.
Auf der Website PSOUG.org finden Nutzer und Entwickler von Oracle-Datenbanken ausführliche Informationen und Code-Beispiele. Zugleich können sie sich dort mit anderen Mitgliedern der Community austauschen. Datenbank-Administratoren (DBA) zeigen dort unter anderem auch, wie man jeder Tabelle in einer relationalen Datenbank über eine INSERT-Anweisung einen oder mehrere Datensätze hinzufügt.
Damit ein Benutzer Zeilen in eine Tabelle einfügen kann, muss die Tabelle dem eigenen Schema des Benutzers entsprechen oder der Nutzer muss das Recht besitzen, Objekte einfügen zu dürfen (INSERT Object Privilege).
Beim Einsatz von Oracle 10g oder neueren Versionen empfiehlt Oracle-Berater Denny Cherry auf PSOUG.org den Befehl INSERT ALL, um mehrere Zeilen mit Daten aus mehreren Tabellen in eine Tabelle zu übertragen:
INSERT ALL
INTO table (column1, column2, , ,)
VALUES (list of values)
SELECT ....
FROM table1, table2, ,
WHERE....;
Stammen die Daten aus einer Tabellenkalkulation oder einer Datei, die Kommas als Trennzeichen verwendet, rät Cherry dazu, die Daten entweder von einer temporären Tabelle oder einer externen Tabelle zu importieren.
Einen anderen Ansatz für das Einfügen mehrerer Zeilen in eine Oracle-Datenbank schlägt Community-Mitglied Frank Kulash vor:
INSERT INTO table_name (column_1, column_2, ..., column_n)
SELECT value_1, value_2, ..., value_n
FROM ...
Das dritte Code-Beispiel stammt von Amit Sharma, ebenfalls Mitglied der Community auf PSOUG.org:
INSERT ALL INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3') INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3') INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3') SELECT * FROM dual;
Laut Sharma lassen sich auch über folgenden Befehl mehrere Werte in mehrere Tabellen einfügen:
INSERT ALL INTO product (product_id,product_name) VALUES (1000, 'Disc') INTO product (product_id, product_name) VALUES (2000, 'Floppy') INTO customers (customer_id, customer_name, city) VALUES (999999, 'Anderson Construction', 'New York') SELECT * FROM dual;
Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+ und Facebook!