Newsgroup: it.comp.lang.visual-basic
Titolo: Esportare un foglio Excel su Oracle

Premettendo che sono quasi il niubbo dell'anno scorso, sfornito di
qualifiche e manuali...volevo porvi un quesito:
Sto usando VBA (e già questo non vi piace...), volevo saper se è possibile
esportare un foglio excel su Oracle usando ADO, DAO , ADOX...insomma una
query di tipo "Insert into Oracle from  Excel" senza dovermi scorrere
l'intero foglio riga a riga.
Sono riuscito a leggere e scirvere Oracle..e a leggere Excel con ADO, ma non
riesco a legare le due cose...sono conscio di utilizzare due Provider
diversi (jet e Oracle ODBC) e che questo potrebbe causare dei problemi...
L'inserimento di un foglio completo (65536 righe) anche usando un array non
scende sotto i 13 minuti di elaborazione. Stiamo sempre parlando di 65.000
insert.
In alternativa volevo sapere se esiste un metodo alternativo che non sia
SqlLoader...vedo precaria in questo caso la gestione degli eventuali errori.
Vi ringrazio in anticipo.
Saluti, Il Sora!!

 SqlLoader...vedo precaria in questo caso la gestione degli eventuali
errori.
se vuoi velocità devi usare sql*loader(e ti assicuro che il log che presenta
è dettagliatissimo)...
tutte le altre soluzioni sono più lente.

 SqlLoader...vedo precaria in questo caso la gestione degli eventuali
errori.
SqlLoader è come ti ha già detto Matteoooo la soluzione sicuramente più
veloce,
in ogni caso puoi fare qualcosa per abbassare il tempo di inserimento.
Ammesso che il problema sia l'inserimento e non la lettura di un intero file
excel
(che in realtà farà la sua parte nei 13 minuti)
puoi vedere di considerare degli accorgimenti per velocizzare la insert.
**
Se la tabella Oracle di destinazione ha dei constraint o degli indici puoi
provare
a vedere cosa succede disabilitandoli (alter session è il comando).
**
Puoi vedere anche qualcosina sulla lettura del file excel, il foglio excel è
veramente
completo? non puoi fermari quando finisce il foglio?
Etc etc..
    danilo

     danilo
Allora, sto continuando a perorare la causa di "una botta e via!" per
l'inserimento da Excel diretto su Oracle.
Nei miei tentativi con ADOX non sono riuscito a linkare la "tabella" Excel ,
am tentavo con il Provider Jet, mentre l'activeconnection era sull'ODBC. Se
in effetti si può leggere Excel da ODBC potrei risolvere inquesto modo.
Le letture su Excel sono ad oggi ottimizzate, passo il Range realmente
utilizzato su Excel in un array in memoria e scorro questo. togliendo
l'insert ci mette meno di un secondo a fare lo scorrimento e a comporre lo
Statement di insert.
Ho visto ora due novità:
1) usare l'updateBatch ( Batchupdate che dir si voglia...purtroppo sono a
casa e vado quindi a memoria), facendo tutti gli inserimenti in cache e
chiedendo l'insert "fisico" a fine elaborazione in un solo colpo. Devo
verificare se l'odbc supporta l'opzione e provare a farlo.
2) Non ancora convinto dell' impossibilità del colpaccio ho provato ad
aprire un Access , linkare il foglio Excel e la Tabella Oracle e fare
l'aggiornamento...che si è concluso positivamente tramite una Query di
accodamento..ovvero una "insert from table". Quindi è possibile! Mi resta da
capire come esegue i collegamenti Access per concludere l'affare! :) Ho
provato con un solo record quindi non posso stimare i tempi. Oggi pomeriggio
faccio la prova col foglio completo.
Stasera leggo e posto le evntuali news, per ora grazie a tutti per le
risposte! :-)
Saluti, Il Sora!!

 wrote in message
2qd18qF...@uni-berlin.de...

Essendo un'aplicazione Online di cui l'export su Oracle rappresenta solo una
piccola ma intensa parte non vorrei dovermi trovare davanti ad un log da
interpretare per consigliare l'utente sul da farsi...da valutare anche, da
parte mia, cosa capita alla tabella se si interrompe il caricamento a
metà..ovvero come funziona il rollback in questo caso. La tabella in oggetto
non è l'unica ad essere aggiornata e vorrei perciò mantenere "l'integrità
referenziale" (che non è fisica ma gestita a programma).
Grazie per la risposta
Saluti, Il Sora!!


Dopo varie prove...
ho provato l'UpdateBatch....50% di tempo in piů!!! :-((( E' dichiarato
invece che ci metta meno tempo...
Ho provato da Access ad aggiornare Oracle direttamente da Excel... stesso
tempo che da codice.
A questo punto tengo buono il codice com'era nella prima vesione...
Se qualcuno avesse delle nuove in proposito son lieto di ascoltare! :-)
Saluti, Il Sora!!