sql >> Database >  >> RDS >> Oracle

4 manieren om meerdere rijen in Oracle in te voegen

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.


  1. Nummers verwijderen van string sql-server

  2. MySQL en JDBC met rewriteBatchedStatements=true

  3. Zet decimale tijd om in uren en minuten

  4. Kan ik MySQL-API's in PHP mixen?