Oracle
 sql >> Baza danych >  >> RDS >> Oracle

4 sposoby wstawiania wielu wierszy w Oracle

Jeśli używasz DBMS, takich jak MySQL lub SQL Server, składnia wstawiania wielu wierszy in do tabeli za pomocą jednej instrukcji jest całkiem prosta.

Ale jeśli używasz Oracle Database, musisz użyć innej składni.

Opcja 1:Użyj SELECT Zapytanie

Pierwsza opcja to użycie SELECT oświadczenie dla każdego wiersza, który należy wstawić:

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;

Musimy dołączyć FROM dual dla każdego wiersza UNION ALL połączyć każdy WYBIERZ oświadczenie, a także końcowy SELECT oświadczenie.

Opcja 2:Użyj WSTAW WSZYSTKO

Inną opcją jest użycie WSTAW WSZYSTKO oświadczenie:

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;

Pamiętaj, aby dołączyć ostatnią linię wybierającą z podwójny .

Opcja 3:Użyj wielu opcji WSTAW DO Oświadczenia

Innym sposobem na to jest użycie INSERT INTO oświadczenia:

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że się okazać, że działa to znacznie wolniej niż dwie poprzednie metody, jeśli masz dużo wierszy do wstawienia.

Opcja 4:Użyj SQL*Loader

Jeśli masz dużo wierszy do wstawienia i być może robisz to regularnie, warto przyjrzeć się SQL*Loaderowi.

SQL*Loader to narzędzie, które umożliwia ładowanie danych z zewnętrznych plików do tabel bazy danych Oracle.

Korzystając z powyższych przykładów, zawartość naszego pliku kontrolnego może wyglądać mniej więcej tak:

load data
infile 'products.csv'
into table Products
fields terminated by "," optionally enclosed by '"'              
( ProductId, ProductName, Price )

Gdzie products.csv to plik zawierający wszystkie wiersze do wstawienia.

A potem ładowanie danych może wyglądać mniej więcej tak:

sqlldr <username> control=load_products.ctl

Gdzie to nasza nazwa użytkownika i load_products.ctl to nasz plik kontrolny.

Zobacz dokumentację Oracle dotyczącą SQL*Loader, aby uzyskać więcej informacji o tym, jak z niego korzystać.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odpowiednik Oracle ISNULL()

  2. Funkcja NUMTODSINTERVAL() w Oracle

  3. Sekwencja Wyroczni zaczynająca się od 2 zamiast 1

  4. Jaka jest różnica między „RRRR” a „RRRR” w Oracle SQL?

  5. IN vs OR Oracle, co szybciej?