Precedente :: Successivo |
Autore |
Messaggio |
horus Macchinista
Registrato: 22/03/05 09:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 31 Gen 2006 11:26 Oggetto: [pl/sql] Comando copy |
|
|
Il problema è molto semplice: devo creare una procedura che copia dati da un database ad un altro.
Il metodo più rapido è:
Codice: | COPY FROM SCOTT/TIGER@LOCAL_DB TO SCOTT/TIGER@REMOTE_DB
CREATE IMAGE_TABLE USING
SELECT IMAGE_NO, IMAGE
FROM IMAGES; |
Ma funziona solo se lanciato da SQL*Plus, io avrei bisogno invece di farlo girare in una procedura pl/sql sul db, è possibile? |
|
Top |
|
|
GrayWolf Dio maturo
Registrato: 03/07/05 16:24 Messaggi: 2325 Residenza: ... come frontiera i confini del mondo...
|
Inviato: 01 Feb 2006 03:26 Oggetto: Re: [pl/sql] Comando copy |
|
|
horus ha scritto: | Il problema è molto semplice: devo creare una procedura che copia dati da un database ad un altro.
Il metodo più rapido è:
Codice: | COPY FROM SCOTT/TIGER@LOCAL_DB TO SCOTT/TIGER@REMOTE_DB
CREATE IMAGE_TABLE USING
SELECT IMAGE_NO, IMAGE
FROM IMAGES; |
Ma funziona solo se lanciato da SQL*Plus, io avrei bisogno invece di farlo girare in una procedura pl/sql sul db, è possibile? |
Le reminescenze su oracle sono troppo labili...
la sintassi sql di una query per copiare una tabella da un database ad un altro è questa:
Codice: |
SELECT *
INTO DBTo..TableTo
FROM DBFrom..TableFrom
|
se non mi ricordo male è SQL-ANSI 92 che, sempre se i ricordi non sono confusi, è accettato anche da oracle.
NB. fra i due punti è possibile inserire l'owner per eventuale controllo dei privilegi.
nella forma db.owner.table
------------------------------------------------------------------------------------
le prossime righe prendile con moooooolto beneficio d'inventario
diverso è se il database di destinazione è su un'altra macchina, (non trovo più la sintassi completa) mi sembra che basti anticipare:
servername.istanzadeldb. alla clausola dbTo..TableTo
se le istanze di trattamento del db sono diverse da macchina a macchina
altrimenti non è necassario se nel mastercatalog è assegnato il multivolume.
------------------------------------------------------------------------------------- |
|
Top |
|
|
horus Macchinista
Registrato: 22/03/05 09:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 01 Feb 2006 11:48 Oggetto: |
|
|
Grazie per la risposta.
Io come sintassi conosco
Codice: | insert into....
select from |
Nel mio caso però si tratta di due db su server separati e quella query, seppur perfettamente funzionante, impiega tempi biblici.
La query che ho inizialmente postato funziona benissimo lanciata da SQL*Plus impiegando un decimo del tempo. Il problema è che sul server del db non c'è e io possono solo schedulare una procedura scritta in pl/sql sul db.
Ora sto esplorando le vie del
Codice: | create table t_dest as
select * from t_source |
Sembra che sia quasi performante come il copy e che giri anche da procedura. |
|
Top |
|
|
lukazzen Eroe
Registrato: 30/01/07 10:57 Messaggi: 47
|
Inviato: 16 Mag 2007 14:14 Oggetto: |
|
|
Ciao,
non essendo comandi pl/sql (procedurali), li puoi eseguire in una sessione pl-sql tramite sql dinamico (con prepare-execute-ecc.)
Es. in pl-sql non puoi fare una CREATE , una DROP ecc.
Prova e fammi sapere.
P.S. se vuoi, ti passo la sintassi. |
|
Top |
|
|
|