Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

4 cách để chèn nhiều hàng trong Oracle

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thay đổi ngôn ngữ cho phiên Oracle của bạn

  2. Làm thế nào chúng ta có thể xác định kích thước tham số đầu ra trong thủ tục được lưu trữ?

  3. Làm cách nào để bạn tạo một bảng tạm thời trong cơ sở dữ liệu Oracle?

  4. Cách loại bỏ “X hàng đã chọn” trong SQLcl &SQL * Plus (Oracle)

  5. Tùy chọn phân phối trong khi gửi yêu cầu đồng thời trong R12.1.3