Als u DBMS'en zoals MySQL of SQL Server gebruikt, is de syntaxis voor het invoegen van meerdere rijen iin een tabel met een enkele instructie vrij eenvoudig.
Maar als u Oracle Database gebruikt, moet u een andere syntaxis gebruiken.
Optie 1:Gebruik een SELECT
Zoekopdracht
De eerste optie is om een SELECT
. te gebruiken statement voor elke rij die moet worden ingevoegd:
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;
We moeten FROM dual
. opnemen voor elke rij, UNION ALL
om elke SELECT
. te combineren statement, evenals de laatste SELECT
verklaring.
Optie 2:Gebruik INSERT ALL
Een andere optie is om de INSERT ALL
. te gebruiken verklaring:
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;
Zorg ervoor dat u de laatste regel opneemt uit dual
.
Optie 3:Gebruik meerdere INSERT INTO
Verklaringen
Een andere manier om dit te doen is door INSERT INTO
. te gebruiken uitspraken:
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 );
Het kan zijn dat dit veel langzamer gaat dan de vorige twee methoden als u veel rijen moet invoegen.
Optie 4:Gebruik SQL*Loader
Als je veel rijen moet invoegen, en misschien als je dit regelmatig doet, wil je misschien eens kijken naar SQL*Loader.
SQL*Loader is een hulpprogramma waarmee u gegevens uit externe bestanden in Oracle Database-tabellen kunt laden.
Als we de bovenstaande voorbeelden gebruiken, kan de inhoud van ons controlebestand er ongeveer zo uitzien:
load data
infile 'products.csv'
into table Products
fields terminated by "," optionally enclosed by '"'
( ProductId, ProductName, Price )
Waar products.csv
is het bestand dat alle in te voegen rijen bevat.
En dan kan het laden van de gegevens er ongeveer zo uitzien:
sqlldr <username> control=load_products.ctl
Waar <username>
is onze gebruikersnaam en load_products.ctl
is ons controlebestand.
Zie Oracle's documentatie voor SQL*Loader voor meer informatie over het gebruik ervan.