Wenn Sie DBMS wie MySQL oder SQL Server verwenden, ist die Syntax zum Einfügen mehrerer Zeilen iin eine Tabelle mit einer einzigen Anweisung ganz einfach.
Wenn Sie jedoch Oracle Database verwenden, müssen Sie eine andere Syntax verwenden.
Option 1:Verwenden Sie ein SELECT
Abfrage
Die erste Option ist die Verwendung eines SELECT
Anweisung für jede einzufügende Zeile:
INSERT INTO Products (ProductId, ProductName, Price)
WITH p AS (
SELECT 1, 'Left Handed Screwdriver', 10.50 FROM dual UNION ALL
SELECT 2, 'Right Handed Screwdriver', 22.75 FROM dual UNION ALL
SELECT 3, 'Bottomless Coffee Cup (4 pack)', 15.00 FROM dual UNION ALL
SELECT 4, 'Urban Dictionary Version 2.3', 75 FROM dual UNION ALL
SELECT 5, 'Beer Water', 15 FROM dual
)
SELECT * FROM p;
Wir müssen FROM dual
einfügen für jede Zeile UNION ALL
um jedes SELECT
zu kombinieren -Anweisung sowie das abschließende SELECT
Aussage.
Option 2:Verwenden Sie INSERT ALL
Eine weitere Option ist die Verwendung von INSERT ALL
Aussage:
INSERT ALL
INTO Products ( ProductId, ProductName, Price ) VALUES ( 1, 'Left Handed Screwdriver', 10.50 )
INTO Products ( ProductId, ProductName, Price ) VALUES ( 2, 'Right Handed Screwdriver', 22.75 )
INTO Products ( ProductId, ProductName, Price ) VALUES ( 3, 'Bottomless Coffee Cup (4 pack)', 15.00 )
INTO Products ( ProductId, ProductName, Price ) VALUES ( 4, 'Urban Dictionary Version 2.3', 75 )
INTO Products ( ProductId, ProductName, Price ) VALUES ( 5, 'Beer Water', 15 )
SELECT 1 FROM dual;
Stellen Sie sicher, dass Sie die letzte Zeile aus dual
auswählen .
Option 3:Verwenden Sie mehrere INSERT INTO
Aussagen
Eine andere Möglichkeit ist die Verwendung von INSERT INTO
Anweisungen:
INSERT INTO Products VALUES ( 1, 'Left Handed Screwdriver', 10.50 );
INSERT INTO Products VALUES ( 2, 'Right Handed Screwdriver', 22.75 );
INSERT INTO Products VALUES ( 3, 'Bottomless Coffee Cup (4 pack)', 15.00 );
INSERT INTO Products VALUES ( 4, 'Urban Dictionary Version 2.3', 75 );
INSERT INTO Products VALUES ( 5, 'Beer Water', 15 );
Möglicherweise stellen Sie fest, dass dies viel langsamer als die beiden vorherigen Methoden ausgeführt wird, wenn Sie viele Zeilen einfügen müssen.
Option 4:SQL*Loader verwenden
Wenn Sie viele Zeilen einfügen müssen und dies vielleicht regelmäßig tun, sollten Sie sich SQL*Loader ansehen.
SQL*Loader ist ein Dienstprogramm, mit dem Sie Daten aus externen Dateien in Oracle-Datenbanktabellen laden können.
Anhand der obigen Beispiele könnte der Inhalt unserer Steuerdatei etwa so aussehen:
load data
infile 'products.csv'
into table Products
fields terminated by "," optionally enclosed by '"'
( ProductId, ProductName, Price )
Wobei products.csv
ist die Datei, die alle einzufügenden Zeilen enthält.
Und dann könnte das Laden der Daten etwa so aussehen:
sqlldr <username> control=load_products.ctl
Wobei <username>
ist unser Benutzername und load_products.ctl
ist unsere Steuerdatei.
Weitere Informationen zur Verwendung finden Sie in der Oracle-Dokumentation für SQL*Loader.