+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Porting Tabella

  1. #1
    L'avatar di dante.3d
    dante.3d ora è in linea Scolaretto
    Post
    66

    Porting Tabella

    Ciao a Tutti..
    Sto facendo un porting di una tabella da ~100.000 record..
    è una vecchia tabella Excel..

    Sto procedendo con una nuova TTable con ADO.. ogni campo ha alcune cosiderazioni da fare.. quindi non riuscivo con una query sql..

    sto usando le transazioni... (faccio male??)

    ci sono dei problemi.. il programma si blocca in alcuni punti (al 5%) presuppongo per problemi di lunghezza di campo..
    avete della idee per come fare a capire qual'è il campo da rettificare??

    oppure avete un'idea sul miglior metodo di procedere..

    pensavo di eliminare le transazioni in modo da capire dove si blocca.. quando poi funzionera conviene rimetterle..
    Voi che dite??

    ciao e grazie.

  2. #2
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    5,967
    Hai dimenticato di dire:
    1) su QUALE database stai importando.
    2) COME stai importando i dati

    Eliminare la transazione non risolve nulla, anzi è peggio perché in caso di errore ti costringe ad azzerare la tabella ogni volta.
    Mentre con una transazione attiva non hai questo problema.
    Sei sicuro di aver capito a cosa serve una transazione (vista anche la tua domanda...)?

  3. #3
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,075
    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    Sto procedendo con una nuova TTable con ADO.. ogni campo ha alcune cosiderazioni da fare.. quindi non riuscivo con una query sql..
    Se travasi dati da un database a un altro, difficilmente puoi farlo con una query unica che comprenda entrambe le operazioni: avrai una parte di codice che si occupa di scandire i record originali, uno per uno, e di caricarli in memoria, e un'altra parte di codice che si occuperà di inserirli nella tabella (o tabelle) sul database di destinazione.

    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    sto usando le transazioni... (faccio male??)
    Dipende: perché hai pensato di introdurle? Come ha già detto Gibra, hai verificato a che cosa servono?

    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    ci sono dei problemi.. il programma si blocca in alcuni punti (al 5%) presuppongo per problemi di lunghezza di campo..
    avete della idee per come fare a capire qual'è il campo da rettificare??
    Come fai a presupporlo? C'è un messaggio di errore da poter visualizzare?
    E inoltre, hai verificato che la dimensione del campo di destinazione sia sufficientemente capiente?
    In alternativa, provvedi a troncare il valore del campo - se tollerabile - prima dell'inserimento?

    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    oppure avete un'idea sul miglior metodo di procedere..
    Impossibile dare delle indicazioni utili perché mancano troppe informazioni: il database di destinazione, un esempio di organizzazione dei dati, la struttura della tabella di destinazione, il messaggio di errore ricevuto, ecc.

    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    pensavo di eliminare le transazioni in modo da capire dove si blocca.. quando poi funzionera conviene rimetterle..
    Voi che dite??
    Una sola certezza: le transazioni difficilmente hanno a che fare con il problema che riscontri, qualunque esso sia.

    Fornisci i dati mancanti così abbiamo qualche indicazione in più per poter capire e quindi proporre qualche soluzione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  4. #4
    L'avatar di dante.3d
    dante.3d ora è in linea Scolaretto
    Post
    66
    Quote Originariamente inviato da _alka_ Visualizza il messaggio
    Se travasi dati da un database a un altro, difficilmente puoi farlo con una query unica che comprenda entrambe le operazioni: avrai una parte di codice che si occupa di scandire i record originali, uno per uno, e di caricarli in memoria, e un'altra parte di codice che si occuperà di inserirli nella tabella (o tabelle) sul database di destinazione.
    infatti la procedura è enorme..
    però deve esser fatta una tantum..
    ci sono molti problemi tra cui.. tutti i campi stringa sono lunghissimi.. e devo accorciarli.. (per tutti i campi testo la dimensione è 255 car)
    solo che sono anche tanti quindi volevo semplicemente capire quali dei tanti campi va fuori limite e poi decidere che fare.. alcuni devo sistemarli a manina..
    inoltre alcuni vanno indicizzati.. quindi ho creato delle tabelle indice con ID.. e nel porting metto solo l'ID..

    Quote Originariamente inviato da _alka_ Visualizza il messaggio
    Dipende: perché hai pensato di introdurle? Come ha già detto Gibra, hai verificato a che cosa servono?
    Le introduco perchè o passano tutte o non passa nessuna.. solo che così facendo non mi accorgo dove avviene l'errore in modo "rapido"..

    Quote Originariamente inviato da _alka_ Visualizza il messaggio
    Come fai a presupporlo? C'è un messaggio di errore da poter visualizzare?
    E inoltre, hai verificato che la dimensione del campo di destinazione sia sufficientemente capiente?
    In alternativa, provvedi a troncare il valore del campo - se tollerabile - prima dell'inserimento?
    Si il messaggio è un pò generico ed è del tipo "uno o più campi non sono del tipo corretto"..
    ma controllando bene tutti i casting.. l'errore è nella dimensione..

    Quote Originariamente inviato da _alka_ Visualizza il messaggio
    Impossibile dare delle indicazioni utili perché mancano troppe informazioni: il database di destinazione, un esempio di organizzazione dei dati, la struttura della tabella di destinazione, il messaggio di errore ricevuto, ecc.
    Cercavo più che una soluzione, un consiglio su come procedere per fare il porting.. non mi serve una routine robusta perchè deve esser fatto 1 tantum.. poi non mi servirà +...
    credo che esitano anche dei programmi per fare il porting.. prima o poi me ne dovrò fare uno.. dove impostare "visivamente" le regole campo per campo..

    Quote Originariamente inviato da gibra
    Hai dimenticato di dire:
    1) su QUALE database stai importando.
    Per ora su mdb Access.. poi tutto il programma credo e spero che andrà su DB MS_SQL_2014..
    comunque Microsoft sicuramente..

    grazie mille!
    Ultima modifica di dante.3d; 12-06-2018 18:02 

  5. #5
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    5,967
    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    Cercavo più che una soluzione, un consiglio su come procedere per fare il porting..
    Un consiglio si può dare su qualcosa che si conosce.
    Qui non conosciamo niente di niente.
    Impossibile dare consigli sarebbero solo dati a vanvera...

  6. #6
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,075
    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    Le introduco perchè o passano tutte o non passa nessuna.. solo che così facendo non mi accorgo dove avviene l'errore in modo "rapido"..
    Indipendentemente dal fatto che usi o meno una transazione, l'errore si verifica nel momento in cui tenti di salvare il record con troppi dati, quindi se analizzi il contesto (variabili, record corrente o altro) quando l'eccezione viene sollevata, magari facendo debugging in Delphi, riesci a capire qual è la riga che da il problema e quindi individuare cosa ti manca per poter adattare il dato al campo, o quale campo è errato, ecc.

    Per tutto il resto, difficile dare suggerimenti poiché mi pare di capire che si tratta di un base dati completamente "custom" per cui ogni problema va verificato a sé, e non avendo né una copia del database né i dettaglio relativi, non si può dire molto a riguardo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  7. #7
    L'avatar di dante.3d
    dante.3d ora è in linea Scolaretto
    Post
    66
    OK orami sono alla fine..
    ho quasi risolto. tutto..
    Riguardo al debbugging ok.. ma l'errore si verifica solo sul post della tabella..
    non capisco quale sia il campo/i..
    sono io niubbo!?

    ciao e ancora grazie a tutti per la pazienza..

  8. #8
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,075
    Quote Originariamente inviato da dante.3d Visualizza il messaggio
    Riguardo al debbugging ok.. ma l'errore si verifica solo sul post della tabella..
    non capisco quale sia il campo/i..
    Quando sei in debugging, puoi controllare i valori che stai cercando di impostare.

    A meno che tu non abbia migliaia di campi, e allora prevedo un serio problema di design della base dati, puoi sempre controllarne uno per uno, o addirittura scrivere codice che partendo dalle lunghezze massime possibili esegua il controllo al posto tuo, prevenendo l'eccezione e segnalando il problema in modo più opportuno e comprensibile.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi