Beste Weg, um zu tun, multi-row-insert in Oracle?
Ich bin auf der Suche nach einer guten Möglichkeit zur Durchführung von multi-row-inserts in eine Oracle 9 Datenbank. Das folgende funktioniert in MySQL, aber scheint nicht unterstützt zu werden in Oracle.
INSERT INTO TMP_DIM_EXCH_RT
(EXCH_WH_KEY,
EXCH_NAT_KEY,
EXCH_DATE, EXCH_RATE,
FROM_CURCY_CD,
TO_CURCY_CD,
EXCH_EFF_DATE,
EXCH_EFF_END_DATE,
EXCH_LAST_UPDATED_DATE)
VALUES
(1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(5, 1, '28-AUG-2008', 1.16, 'USD', 'AUD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(6, 1, '28-AUG-2008', 7.81, 'USD', 'HKD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008');
InformationsquelleAutor der Frage Jamey | 2008-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies funktioniert in Oracle:
Die Sache zu erinnern ist hier an die Verwendung der
from dual
- Anweisung.(Quelle)
InformationsquelleAutor der Antwort Espo
In Oracle, zum einfügen von mehreren Zeilen in Tabelle t mit den Spalten col1, col2 und col3 Sie können die folgende syntax verwenden:
InformationsquelleAutor der Antwort Myto
Verwenden Sie den SQL*Loader. Es dauert ein wenig einrichten, aber wenn das nicht einmalig, es lohnt sich.
Create Table
Erstellen CSV -
Erstellen Von Loader Control-Datei
Ausführen von SQL*Loader-Kommando
Bestätigen einfügen
SQL*Loader hat eine Menge von Optionen, und nehmen so ziemlich jede text-Datei als Eingabe. Sie können sogar inline die Daten in Ihrem control-Datei, wenn Sie wollen.
Hier ist eine Seite mit mehr details -> SQL*Loader
InformationsquelleAutor der Antwort Matthew Watson
Immer wenn ich das tun müssen, Baue ich einen einfachen PL/SQL-block mit einem lokalen Verfahren, wie diese:
InformationsquelleAutor der Antwort
Wenn Sie die Werte, die Sie einfügen möchten in einer anderen Tabelle schon, dann können Sie aus einer select-Anweisung.
Sonst, Sie können Liste eine Reihe von Einzel-row-insert-Anweisungen und senden mehrere Abfragen in der Masse zu sparen Sie die Zeit für etwas, das funktioniert in Oracle und MySQL.
@Espo's Lösung ist auch gut, dass die Arbeit sowohl mit Oracle und MySQL wenn Sie Ihre Daten nicht bereits in einer Tabelle.
InformationsquelleAutor der Antwort Ryan Ahearn
Cursor kann auch verwendet werden, obwohl es ineffizient ist.
Die folgenden stackoverflow-post beschreibt die Verwendung von Cursorn :
INSERT-und UPDATE eines Datensatzes mittels Cursor in oracle
InformationsquelleAutor der Antwort Vasanth Raghavan