sql >> Databáze >  >> RDS >> Oracle

4 způsoby, jak vložit více řádků do Oracle

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.


  1. Vícenásobné databázové připojení v Rails

  2. SQL rekurzivní dotaz na samoodkazovací tabulku (Oracle)

  3. Proč se při dotazu na propojený server na data jiná než xml zobrazí chyba, že typ dat XML není podporován v distribuovaných dotazech?

  4. Oprávnění EXECUTE bylo odepřeno pro objekt 'xxxxxxx', databázi 'zzzzzzzz', schéma 'dbo'