Tôi không quen thuộc với PLSQL, tuy nhiên tôi phải thực hiện một số lượng lớn chèn cho một nhiệm vụ.oracle số lượng lớn chèn
Về cơ bản, tôi phải truy vấn bảng một để có được một cột và sau đó sử dụng nó trên một bảng khác để chèn nó. Một cái gì đó như thế này:
for (ids in a file As cur_id)
{
Select DISTINCT column1 As col1_list from table1 where id=cur_id
for (cols in col1_list as cur_col)
Insert into table2 values ('cur_id','cur_col','214','234','first 3 chars of cur_col')
}
Bây giờ, tôi có khoảng 4k id + trong file và mỗi id sẽ có phạm vi khác nhau của col1 riêng biệt: Max: 165 triệu, min ~ 2k
Tôi cố gắng để đạt được điều này "đọc từ một bảng và chèn vào sử dụng số lượng lớn chèn khác", nó không quan trọng nếu điều này chạy qua đêm, vv
tôi có kịch bản này từ một số nghiên cứu trực tuyến:
CREATE OR REPLACE PROCEDURE test_proc
IS
TYPE TObjectTable IS TABLE OF ALL_OBJECTS%ROWTYPE;
ObjectTable$ TObjectTable;
BEGIN
SELECT * BULK COLLECT INTO ObjectTable$
FROM ALL_OBJECTS;
FORALL x in ObjectTable$.First..ObjectTable$.Last
INSERT INTO t1 VALUES ObjectTable$(x) ;
END;
tôi nghĩ rằng điều này có thể hữu ích trong trường hợp của tôi, nhưng tôi hoàn toàn không hiểu ngữ nghĩa. Nơi nào tôi đề cập đến column1 ... cũng cho các giá trị chèn được thể hiện như ObjectTable $ (x) insetead của các giá trị (.., .., ..).
Ai đó có thể giải thích kịch bản cho tôi và giúp tôi sửa đổi kịch bản cho trường hợp sử dụng của tôi bằng cách sử dụng các biến table1, table2, col1, ids etc mà tôi đã đề cập trong ví dụ của mình.
DB là 10g
Cảm ơn!
Whats "loạt các col1 riêng biệt: Max: 165 triệu, min ~ 2k" phải nghĩa là? Vui lòng mô tả tốt hơn các cột của bảng 1 và bảng 2. – Codo