Ich richte einen Uploader (mit PHP) für meinen Kunden ein, wo sie eine CSV (in einem vorher festgelegten Format) auf ihrem Rechner zum Hochladen auswählen können. Die CSV wird wahrscheinlich 4000 bis 5000 Zeilen haben. PHP verarbeitet die Datei, indem jede Zeile der CSV gelesen und direkt in die DB-Tabelle eingefügt wird. Dieser Teil ist einfach.Möglich, eine gemischte überschreiben/anfügen Batch-Schreiben in MySQL?
Im Idealfall würde ich jedoch, bevor ich diese Daten an die Datenbanktabelle anfüge, 3 der Spalten (A, B und C) überprüfen und prüfen, ob ich bereits eine passende Kombination dieser 3 Felder in habe Die Tabelle UND WENN SO würde ich lieber diese Zeile aktualisieren als anzuhängen. Wenn ich keine passende Kombination dieser 3 Spalten habe, möchte ich fortfahren und die Zeile einfügen, indem ich die Daten an die Tabelle anfüge.
Mein erster Gedanke ist, dass ich die Spalten A, B und C zu einem eindeutigen Index in meiner Tabelle machen und dann einfach jede Zeile einfügen konnte, ein 'gescheitertes' INSERT (aufgrund der Beschränkung meines eindeutigen Index) irgendwie und dann mache das Update. Scheint, dass diese Methode effizienter sein könnte als eine separate SELECT-Abfrage für jede Zeile zu machen, nur um zu sehen, ob ich bereits eine passende Kombination in meiner Tabelle habe. Ein dritter Ansatz kann sein, einfach ALLES anzuhängen, keinen eindeutigen MySQL-Index zu verwenden und dann nur die neueste eindeutige Kombination zu erfassen, wenn der Client später diese Tabelle abfragt. Ich versuche jedoch, eine Menge nutzloser Daten in dieser Tabelle zu vermeiden.
Gedanken zu Best Practices oder cleveren Ansätzen?
sehr handliche Technik. – phirschybar
Ich bin froh, dass ich helfen konnte. Dies ist ein handlicher Trick, den ich aufgeschnappt habe. –