Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Creare ed eliminare una tabella temporanea.........

    Ciao a tutti, devo fare un lavoro un po' particolare.
    Praticamente, ho un db mysql con tutte le sue belle tabelle e i suoi dati, a me viene dato un file csv ed io devo controllare da una tabella del db se ci sono codici inseriti che non esistono nel file csv.
    Ho provato un approccio tipo:

    - Seleziono tutti i record dalla tabella e li scorro con un ciclo while
    - All'interno del ciclo while che fa scorrere uno ad uno i record del db, faccio girare un altro ciclo while
    che fa scorrere uno ad uno i record del file csv finchè non trova una corrispondenza.
    Se non la trova segnala il record come mancante.

    La cosa funziona, però i tempi di elaborazione sono biblici e non ci sono ancora molti record da analizzare, quindi quando il db sarà a regime diventerà una cosa impossibile.

    Pensavo di risolvere creando una tabella temporanea nel db e sparandogli dentro tutti i record necessari del file csv e da li fare un verifica con una serie di query tra tabelle/record e alla fine eliminare la tabella temporanea.
    Siccome non sono un asso di sql, volevo capire se il fatto di creare una tabella ed eliminarla una o più volte al giorno può compromettere il funzionamento generale del db oppure se è una cosa che magari si fa normalmente.
    Scusate la domanda che magari potrà sembrarvi banale, ma ripete .......... non sono un asso di sql

    Visto che ci sono, volevo anche sapere se esiste un modo veloce di fare il backup di un intero db da uno script php.
    Grazie.
    Stefanoxjx

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ricapitolando.
    Ad esempio la tua tabella contiene

    1
    2
    3
    4
    5

    il tuo csv contiene

    1
    3
    5

    e tu vuoi semplicemente che ti venga restituito

    2
    4

    e' così?

  3. #3
    Esattamente, proprio così.
    Stefanoxjx

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    E' molto semplice.

    Per caricare un file csv in una tabella puoi usare il comando load data.

    In questa discussione trovi un esempio

    http://forum.html.it/forum/showthrea...readid=1406063

    una volta che hai gli id risolvi con una banale query

    codice:
    select td.id from tabella_dati as td
    left join tabella_csv as tc
    on td.id = tc.id
    where tc.id is null

  5. #5
    Grazie, ci provo
    Stefanoxjx

  6. #6
    Originariamente inviato da nicola75ss
    select td.id from tabella_dati as td
    left join tabella_csv as tc
    on td.id = tc.id
    where tc.id is null
    La parte di importazione dal csv l'ho fatta e li sono ok.
    Mi spiegheresti meglio questa query?
    Ho fatto delle prove ma non riesco a capire bene come impostarla.
    Allora, ho una tabella prodotti con nome campo prodotti_codice e la tabella che ho creato sulla quale ho importato il file csv che si chiama compara e con un solo campo "codice".
    Come dovrei impostare la query?

    Ho provato a buttarla giù in questo modo e in varie altre forme ma mi da sempre errori:
    codice:
    select products_model from products as td
    left join compara as tc
    on td.id = codice
    where codice is null
    Mi viene anche il dubbio che il nome campo sulla tabella compara a questo punto debba essere uguale a quello sulla tabella prodotti.
    Ti ringrazio per l'eventuale aiuto.
    Ciao.
    Stefanoxjx

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Il join va fatto sul campo che vuoi confrontare (non è obbligatorio che abbiano lo stesso nome)


    on td.prodotti_codice = codice

  8. #8
    Nel frattempo, l'ho un po' semplificata e sono riuscito a farla funzionare

    codice:
    select prodotti_codice from prodotti
    left join compara
    on prodotti_codice = codice
    where codice is null
    Ora, vorrei chiederti se c'è la possibilità di prendere l'output di questa query ed inserirlo in una table html.
    Poi, prometto che ti lascerò in pace
    Grazie.
    Stefanoxjx

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Certo ma ti serve un linguaggio di scripting lato server (asp,php,ecc.).
    Una volta che hai deciso quale linguaggio usare posta nella relativa sezione. Qui andremmo off topic.

  10. #10
    Il linguaggio è il PHP, ma nel frattempo, ho scoperto che sapevo già come si fa, solo che mi sono fatto confondere dai risultati che vedevo su phpmyadmin.
    Ti ringrazio moltissimo del tuo aiuto.
    Mi è stato veramente molto prezioso e mi ha risparmiato un bel po' di righe di codice
    Grazie ancora.
    Ciao.
    Stefanoxjx

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.