Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    [MySQL] Importazione da CSV e controllo campi

    Ciao a tutti, ho un problema nell'importazione di un file CSV in una tabella in quanto, questa volta, oltre ad importare i record devo anche verificare se esistono già e, in quel caso, non inserire il record.

    Devo quindi leggere i dati dal CSV, non considerare quelli già esistenti (per uno specifico campo WHERE) ed importare invece quelli che non sono presenti nella tabella di destinazione.

    Grazie!!!

  2. #2
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    AFAIK non si può fare con LOAD DATA INFILE.
    Ci sono approcci alternativi, tipo pre-selezione con grep o sed, importazione in tabelle temporanee ed eliminazione dei file etc.
    Se sei in vena di lavori "strani" potresti fare un trigger che droppi le righe man mano che le inserisci, ma mi pare abbia un'utilità tendente a zero.

  3. #3

  4. #4
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    E quindi?
    Si può fare oppure no?
    A me non risulta

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    Si si può fare, basta leggere

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    http://dev.mysql.com/doc/refman/5.0/en/load-data.html

    ho provato a leggere con attenzione ma sinceramente non ne vengo a capo.

    quali sarebbero gli step da seguire?

    grazie infinite

  7. #7
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Dipende da cosa intendi esattamente.
    Se vuoi "pre filtrare", come con un WHERE, le righe da elaborare dal file di testo allora, per quanto ne so, non si può fare, punto e basta.

    Se invece vuoi che le eventuali righe che esistono già non vengano inserite, allora... non si può fare lo stesso, a meno che non definisci\usi una chiave primaria ed usi ignore.
    In questo caso quando mysql tenta di inserire una riga con chiave primaria duplicata, normalmente sparerebbe un errore, ma in questo caso se ne frega e continua.
    C'è anche una differenziazione a seconda di dove si trovi il file, ma il succo è quello.

    Certo, magari esiste un'altra tecnica.
    Ma quale?

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    mmm non ho ben capito, uso phpmyadmin per importare i files CSV

    non mi importa considerare i record che esistono già nella tabella del DB, ma semplicemente importare quelli che non sono presenti (quindi nessun update)

    come posso fare?

    Grazie

  9. #9
    non puoi semplicemente lavorare una riga alla volta? la leggi e la cerchi: se NON c'è la inserisci

  10. #10
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679
    Ho già scritto. Non esiste la funzione prima cerca record scise non c è. Inserisci
    Almeno per quanto ne so

    Esiste opzione ignore di load data in file la quale se trova riga duplicata (per duplicata si intende stessa chiave
    primaria non stesso contenuto) fallisce silenziosamente i

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 © 2026 vBulletin Solutions, Inc. All rights reserved.