Nếu bạn sử dụng DBMS như MySQL hoặc SQL Server, thì cú pháp để chèn nhiều hàng i vào một bảng với một câu lệnh duy nhất là khá đơn giản.
Nhưng nếu bạn sử dụng Cơ sở dữ liệu Oracle, bạn sẽ cần sử dụng một cú pháp khác.
Tùy chọn 1:Sử dụng SELECT
Truy vấn
Tùy chọn đầu tiên là sử dụng SELECT
câu lệnh cho mỗi hàng cần được chèn:
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;
Chúng ta cần bao gồm FROM dual
cho mỗi hàng, UNION ALL
để kết hợp từng SELECT
câu lệnh, cũng như SELECT
cuối cùng tuyên bố.
Tùy chọn 2:Sử dụng INSERT ALL
Một tùy chọn khác là sử dụng INSERT ALL
tuyên bố:
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;
Đảm bảo bao gồm dòng cuối cùng chọn từ dual
.
Tùy chọn 3:Sử dụng nhiều INSERT INTO
Tuyên bố
Một cách khác để làm điều đó là sử dụng INSERT INTO
tuyên bố:
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 );
Bạn có thể thấy rằng phương pháp này chạy chậm hơn nhiều so với hai phương pháp trước nếu bạn có nhiều hàng để chèn.
Tùy chọn 4:Sử dụng SQL * Loader
Nếu bạn có nhiều hàng cần chèn và có lẽ nếu bạn đang làm việc đó thường xuyên, bạn có thể muốn xem qua SQL * Loader.
SQL * Loader là một tiện ích cho phép bạn tải dữ liệu từ các tệp bên ngoài vào các bảng Cơ sở dữ liệu Oracle.
Sử dụng các ví dụ trên, nội dung của tệp điều khiển của chúng tôi có thể trông giống như sau:
load data
infile 'products.csv'
into table Products
fields terminated by "," optionally enclosed by '"'
( ProductId, ProductName, Price )
Ở đâu products.csv
là tệp chứa tất cả các hàng để chèn.
Và sau đó tải dữ liệu có thể trông giống như sau:
sqlldr <username> control=load_products.ctl
Ở đâu <username>
là tên người dùng của chúng tôi và load_products.ctl
là tệp kiểm soát của chúng tôi.
Xem tài liệu của Oracle cho SQL * Loader để biết thêm thông tin về cách sử dụng nó.