Goedemiddag,

Met een php-script voeg ik data toe aan een MySQL database.
Nu loop ik tegen het volgende aan, ik wil graag dat als een record al voor komt in de database dat deze niet wordt toegevoegd.

Kan iemand mij op weg helpen?

De Query die ik op dit moment gebruik:


  LOAD DATA LOCAL INFILE "'.$file.'"
        IGNORE INTO TABLE '.$table.'
        FIELDS TERMINATED by \',\'
        LINES TERMINATED BY \'\n\'
 (col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15, col16, col17)
De database eerst leeggooien?

Je zult ons echt meer moeten vertellen over:
- de aard van het CSV-bestand
- de aard van de data
- hoe het CSV-bestand over tijd verandert, en de frequentie hiervan
- wat de mogelijke interacties van deze tabel met andere tabellen zijn
- etc.

Trouwens, een database(-tabel) is meer dan een spreadsheet. Kolomnamen als col1, col2 etc., kan dat niet anders/beter?

En het liefst wil je waarschijnlijk van deze afhankelijkheid van een CSV-bestand af. Zou het niet beter zijn om rechtstreeks via de database te werken (indien mogelijk) zodat je maar één informatiebron hebt, in plaats van meerdere die je de hele tijd moet synchroniseren?
Maak een (eventueel tijdelijke) unique index op de attributen (kolommen) die bepalen dat het record dubbel en dus ongewenst is. Het toe te voegen record wordt dan geweigerd op basis van deze index.

Reageren