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 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ć.