Visualizzazione dei risultati da 1 a 6 su 6

Discussione: aggiornamento dati

  1. #1

    aggiornamento dati

    dovrei caricare una lista di articoli aggiornata ogni tanto nel db
    Pensavo di usare un replace... in modo che se ci sono nuovi articoli li aggiunga se sono stati modificati li rimpiazzi.. ma per quelli cancellati?
    Forse dovrei svuotare la tabella e riempirla... ma ho paura che durante questa operazione qualcuno stia controllando da schermata gli articoli ... e gli dia errore non trovando nulla nel db.
    cosa mi suggerite di fare?


    Poi un'altra cosa ma se replace è simile a insert perchè non posso scrivere così

    REPLACE into tabella (campo1, campo2....)
    VALUES(campo1, campo2..),
    VALUES(campo1, campo2..),
    VALUES(campo1, campo2..),
    VALUES(campo1, campo2..),

    ma solo così
    REPLACE into tabella (campo1, campo2....)
    VALUES(campo1, campo2..);

  2. #2
    mi pare che si possa fare il REPLACE con valori multipli. Tieni pero' presente che il replace si comporta come un insert, ma in caso di rimpiazzo cancella e riscrive il record e quindi necessita della presenza di tutti i campi pena il trovarsi poi con valori di default. Inoltre cambiando l'id son ...azzi amari se la tabella fosse relazionata con altre.

    Prova a considerare l'uso di:

    INSERT ... ON DUPLICATE KEY UPDATE....

    Per la cancellazione dei record devi invece per forza fare un delete.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    ciao mio idolo dell'sql

    ti sottolineo che estraggo i dati da un xml creato da un software di fatturazione
    Prendo come riferimento dei dati il loro id_identificativo ipotizzando che sia unico veramente (ho chiesto che mi facciano sapere se nel caso venga eliminato dal loro sistema un elemento nn ci sia una rindicizzazione, sono in attesa di sapere)
    dunque io quindi non so quali siano i dati cancellati, o melgio dovrebbero essere quelli non presenti in lista
    quindi per la cancellazione potrei fare delete froma articoli NOT IN (id,id,id)

    inserimento modifica e cancellazione in un colpo solo non si può giusto?

    secondo te un inserimento multiplo è + veloce e meno esoso di risorse rispetto a tanti insert?

    la pulizia totale della tabella me la sconsigli?

  4. #4
    bisognerebbe conoscere il progetto piu' in dettaglio. Ad ogni modo, mi pare di capire che siamo in presenza di una tabella che periodicamente viene revisionata e senza dipendenze o riferimenti esterni alla tabella stessa.

    Quindi possono esserci inserimenti, modifiche, cancellazioni non esplicitamente elencate nei dati nuovi.

    Potresti fare una copia dei dati in una tabella nuova con un insert (tabella_new) e verificare i dati se necessario,
    cancellare o meglio rinominare la tabella obsoleta in tabella_old
    rinominare la nuova tabella_new in tabella_corrente

    Ma dipende dal tuo progetto se questa procedura e' fattibile o meno.

    Oppure, sempre se fattibile farei il backup dei dati e l'offline del sito.
    Il TRUNCATE della tabella, il caricamento dei nuovi dati..
    in questo caso avresti un offline piu' lungo del caso precedente.

    In pratica cercare un procedimento standard buono per tutti i casi. Non cercherei di gestire diversamente inserimenti, modifiche o cancellazioni. Impiegheresti di piu' e con possibilita' di errori nei dati.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    allora oggi ho avuto maggiori informazioni
    dunque il cliente invia in formato xml il suo elenco di articoli, un elenco con id univoco e con gli articoli nuovi e modificati, meno quelli eliminati
    alcuni campi desidera che non vengano aggiornati in quanto desidera modificarli lui dal pannello di amministrazione che ha.
    Pensavo di utilizzare semplicemente un replace e poi un delete per cancellare i record dove l'id non è "in" (elenco di id presenti nell'xml)
    Solo che alcuni campi nn devono essere modificati... c'è un modo per mettere delle condizioni al replace?
    cioè se l'id nn esite (quindi è un nuovo record) inserisco tutti i valori altrimenti meno qualche campo

  6. #6
    E' prevista una sintassi apposita per insert.

    INSERT ... ON DUPLICATE KEY UPDATE

    http://dev.mysql.com/doc/refman/5.0/en/insert.html

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.