Non ho familiarità con PLSQL, tuttavia devo eseguire un inserimento di massa per un'attività.oracle bulk insert
Fondamentalmente devo interrogare la tabella uno per ottenere una colonna e quindi usarla su una tabella diversa per inserirla. Qualcosa di simile a questo:
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')
}
Ora, ho intorno 4k + id nel file e ogni ID avrei diversa gamma di col1 distinte: massima: 165 milioni, min ~ 2k
sto cercando di raggiungere questo obiettivo "Leggi da una tabella e incollarli in un'altra inserimento di massa utilizzando", è bene se questo viene eseguito durante la notte ecc
ho ottenuto questo script da qualche ricerca online:
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;
I penso che questo potrebbe essere utile nel mio caso, ma non capisco abbastanza la semantica. Dove menziono column1 ... anche per i valori inseriti sono espressi come ObjectTable $ (x) all'inizio dei valori (.., .., ..).
Qualcuno può spiegarmi lo script e aiutarmi a modificarlo nel mio caso d'uso usando le variabili table1, table2, col1, ids etc che ho citato nel mio esempio.
Il DB è 10g
Grazie!
cosa è "gamma di col1 distinte: massima: 165 milioni, min ~ 2k" suppone significare? Descrivere meglio le colonne di table1 e table2. – Codo