Pokud používáte DBMS, jako je MySQL nebo SQL Server, je syntaxe pro vkládání více řádků ido tabulky s jedním příkazem poměrně přímočará.
Pokud ale používáte Oracle Database, budete muset použít jinou syntaxi.
Možnost 1:Použijte SELECT
Dotaz
První možností je použít SELECT
příkaz pro každý řádek, který je třeba vložit:
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;
Musíme zahrnout FROM dual
pro každý řádek UNION ALL
zkombinovat každý SELECT
stejně jako poslední SELECT
prohlášení.
Možnost 2:Použijte INSERT ALL
Další možností je použít INSERT ALL
prohlášení:
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;
Nezapomeňte zahrnout poslední řádek s výběrem z dual
.
Možnost 3:Použijte více položek INSERT INTO
Prohlášení
Dalším způsobem, jak to udělat, je použít INSERT INTO
prohlášení:
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 );
Možná zjistíte, že to běží mnohem pomaleji než předchozí dvě metody, pokud potřebujete vložit hodně řádků.
Možnost 4:Použijte SQL*Loader
Pokud máte k vložení mnoho řádků a možná to děláte pravidelně, možná se budete chtít podívat na SQL*Loader.
SQL*Loader je nástroj, který vám umožňuje načítat data z externích souborů do tabulek databáze Oracle.
Pomocí výše uvedených příkladů může obsah našeho kontrolního souboru vypadat nějak takto:
load data
infile 'products.csv'
into table Products
fields terminated by "," optionally enclosed by '"'
( ProductId, ProductName, Price )
Kde products.csv
je soubor, který obsahuje všechny řádky k vložení.
A pak načítání dat může vypadat nějak takto:
sqlldr <username> control=load_products.ctl
Kde <username>
je naše uživatelské jméno a load_products.ctl
je náš kontrolní soubor.
Další informace o tom, jak jej používat, najdete v dokumentaci Oracle pro SQL*Loader.