Hvis du bruger DBMS'er såsom MySQL eller SQL Server, er syntaksen for at indsætte flere rækker in i en tabel med en enkelt sætning ret ligetil.
Men hvis du bruger Oracle Database, skal du bruge en anden syntaks.
Mulighed 1:Brug en SELECT
Forespørgsel
Den første mulighed er at bruge en SELECT
erklæring for hver række, der skal indsættes:
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;
Vi skal inkludere FROM dual
for hver række, UNION ALL
for at kombinere hver SELECT
sætning, samt den endelige SELECT
erklæring.
Mulighed 2:Brug INSERT ALL
En anden mulighed er at bruge INSERT ALL
erklæring:
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;
Sørg for at inkludere den sidste linje, der vælger fra dobbelt
.
Mulighed 3:Brug flere INSERT INTO
Erklæringer
En anden måde at gøre det på er at bruge INSERT INTO
udsagn:
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 );
Du vil muligvis opleve, at dette kører meget langsommere end de to foregående metoder, hvis du har mange rækker at indsætte.
Mulighed 4:Brug SQL*Loader
Hvis du har mange rækker at indsætte, og måske hvis du gør det regelmæssigt, kan du tage et kig på SQL*Loader.
SQL*Loader er et værktøj, der giver dig mulighed for at indlæse data fra eksterne filer til Oracle Database-tabeller.
Ved at bruge ovenstående eksempler kan indholdet af vores kontrolfil se nogenlunde sådan ud:
load data
infile 'products.csv'
into table Products
fields terminated by "," optionally enclosed by '"'
( ProductId, ProductName, Price )
Hvor products.csv
er den fil, der indeholder alle de rækker, der skal indsættes.
Og så kan indlæsning af data se sådan ud:
sqlldr <username> control=load_products.ctl
Hvor load_products.ctl
er vores kontrolfil.
Se Oracles dokumentation for SQL*Loader for mere information om, hvordan du bruger det.