Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
[pl/sql] Comando copy
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 31 Gen 2006 11:26    Oggetto: [pl/sql] Comando copy Rispondi citando

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
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 16:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 01 Feb 2006 03:26    Oggetto: Re: [pl/sql] Comando copy Rispondi citando

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
Profilo Invia messaggio privato
horus
Macchinista
Macchinista


Registrato: 22/03/05 09:48
Messaggi: 2554
Residenza: Sirio e dintorni

MessaggioInviato: 01 Feb 2006 11:48    Oggetto: Rispondi citando

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
Profilo Invia messaggio privato
lukazzen
Eroe
Eroe


Registrato: 30/01/07 10:57
Messaggi: 47

MessaggioInviato: 16 Mag 2007 14:14    Oggetto: Rispondi

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
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi