CSV Import MySQL

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • CSV Import MySQL

    Hi!

    Hab folgendes Problem:
    Ich hab eine CSV-Datei, die sich von der Struktur her ständig ändert...
    Nun müssen natürlich auch die Spalten angepasst werden, d.h. Reihenfolge der Spalten.

    Mein Lösungsansatz:
    Ich lese die erste Zeile aus (mittels fgetcsv), in der ja die Überschriften stehen, lösche die alte MySQL Tabelle, leg eine neue an und les die Werte ab Zeile 2 mittels "LOAD DATA INFILE" aus.
    Da es sich um eine Kontaktliste handelt, treten Überschriften häufig auf. Diese könnten ja in einem Array gespeichert werden und je nach Überschrift als INT oder VARCHAR angelegt werden.

    Denk ich hier zu arg um die Ecke und geht das einfacher?
    MFG
    Speedy

  • #2
    warum willst du denn deine db-struktur ständig anpassen? lies einfach die csv-daten in einen array und speichere den in die db.

    warum ändert sich eigentlich laufend deine csv-struktur?
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Original geschrieben von XGremliN
      warum ändert sich eigentlich laufend deine csv-struktur?
      da würde ich auch eher einen ansatz suchen..
      Die Milch bleibt ranzig!

      Kommentar


      • #4
        Die Struktur ändert sich, da mal ne Spalte weggelassen wird oder hinzugefügt wird. Kann auch mal passieren, dass Spalten vertauscht werden.
        Leider habe ich keinen Einfluss darauf. Wie siehts denn jetzt mit dem Lösungsansatz aus. Geht der in die richtige Richtung?

        Kommentar


        • #5
          dein ansatz ist so scho ok. da sich deine struktur aber ständig ändert:
          Original geschrieben von XGremliN
          lies einfach die csv-daten in einen array und speichere den in die db.
          it's not a bug,
          it's a feature!

          Kommentar


          • #6
            Diesen Lösungsansatz würde ich keinesfalls als solchen bezeichnen. Schließlich wird die Tabelle doch von mindestens einer Applikation benutzt (wenn es nur ein Backup der Daten wäre, würdest du gleich die CSV-Datei speichern und wärst fertig).
            Diese Applikation geht davon aus, dass die Tabelle ein bestimmtes Format hat. Wenn das nach einem Import nicht mehr gegeben ist, fliegt dir die Applikation um die Ohren.

            Da es sich um eine Kontaktverwaltung handelt, würde ich alles* was jemals als CSV-Spalte auftreten kann, von vornherein schon als Tabellenspalte anlegen.

            Wenn dann in einem CSV mal Spalten fehlen, wird eben der default value in die DB geschrieben. Die Applikation läuft sauber weiter, denn die Tabellenstruktur hat sich nicht verändert sondern nur der Inhalt.

            Wenn in Zukunft auch neue, bisher unbekannte Spalten im CSV auftauchen, werden die entweder nicht mit importiert oder serialisiert (mit allen Nebenwirkungen wie fehlender Selektionsmöglichkeit) in eine Spalte "Sonstiges" geschrieben.


            *) Die Quelle der CSV-Daten ist sicher auch eine Applikation. Die arbeitet wahrscheinlich auch mit einer DB. Frag die Quelle nach ihrer Tabellenstruktur und den Möglichkeiten beim Export. Dann kannst du eine vollständige Liste aller Permutationen von CSV-Spalten aufstellen und in deiner Importroutine entsprechend behandeln.

            Kommentar


            • #7
              erstmal vielen Dank für die Antworten!

              1. Die Quelle besteht aus einer Excel-Datei, die manuell ins CSV-Format umgewandelt wird.

              2. Gibt es hierfür (Excel-Sheet) eine einfachere Möglichkeit des Imports

              MFG
              Speedy

              Kommentar

              Lädt...
              X