Tom: Lösungsansätze: CSV-Import in DB

Beitrag lesen

Hello,

Es wird vorausgesetzt es sich um eine aus Excel exportierte CSV-Datei handelt, d.h. der Aufbau der CSV-Datei (Trennzeichen ist der Semikolon, Zeilenumbruch als \r\n, Werte sind nicht von Anführungszeichen eingeschlossen) ist bekannt.

Die Feldnamen sind ebenfalls festgelegt, die MySQL-Tabelle wird einmalig angelegt und bleibt bis auf weiteres unverändert.

Das ist wesentlich
1. Zeile enthält Feldnamen?
2. Felder Übereinstimmung prüfen
3. Lokale Default-Werte der DB ergänzen (Timestamp, IP, Bearbeiter...)
4. Felder passend zuordnen

a) Datensatz ist in CSV vorhanden, nicht in DB = Anlegen
   b) Datensatz ist in CSV vorhanden, dito in DB = Update
   c) Datensatz ist nicht in CSV, wohl aber in DB = Löschen

Besser:

a) nur hinzufügen
   alle Datensäzte der CSV, die nicht in der DB stehen, werden
   hinzugefügt. Das erfordert entweder einen sauberen Unique Key,
   oder aber ein Select before Insert _pro_ Datensatz.

b) hinzufügen und updaten -> REPLACE
   Das wäre sicher die normale Methode. Es werden aber nur Felder
   überschreiben, die in der CSV-Tabelle vorhanden sind
   NULL = ",," Leer = ", ," oder ein Steuerzeichen ,#,
   Ob Excel das kann, weiß ich nicht

c) entfernen
   Negativliste ist sehr praktisch.:
   - Die Austritte des Jahres...
   - Abgelaufene Ankündigungen
   - ungülitge Ranglisten
   Das spart Arbeit im Office und Traffic
   Wobei man überlegen sollte, ob man den Datensatz da nicht einfach
   mit einem Sperrmerker versieht

Dann sollte der Key sich aber aus zwei Feldern zusammensetzen:
   Eigentlicher Datensatzschlüssel + lfd. Nummer des Standes

Grüße

Tom