LOAD DATA INFILE vs Array + INSERT INTO

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

  • LOAD DATA INFILE vs Array + INSERT INTO

    Hallo zusammen,

    ein Kunde liefert mir eine csv Datei die ich dann in meine MySQL-DB importieren will.

    Ich wäre dankbar für Tips welcher meiner 3 Lösungswege der bessere ist.

    1. LOAD DATA LOCAL INFILE

    klappt wunderbar, allerdings habe ich viele Spalten in der CSV datei die ich nicht benötige. Mit folgendem Code konnte ich zwar was verändern....

    PHP-Code:
    LOAD DATA LOCAL INFILE 'datei.txt' ... (spalte1spalte2
    ABER, das bezieht sich leider nur auf die MySQL Spalten in die er nichts schreibt, d.h. ich kann damit nicht definieren welche spalten er mir aus meiner csv datei beim auslesen überspringe soll.

    --> Alternativ könnte ich hier für jede Spalte der CSV datei auch in MYSQL eine anlegen, und dann nur die notwendigen Daten bei der Select ausgabe aufrufen. (das ist sicherlich keine schöne Lösung und verbraucht unnötig viel Speicher)

    2. Array + INSERT INTO

    ne andere Idee wäre es die CSV Datei separate einzulesen (z.b. in ein Array) um sie dann zeile für zeile mit "insert into" reinzuschreiben.

    3. Mischung aus beidem

    CSV Datei einlesen, in einer neuen txt datei formatiert abspeichern, um die bearbeitete neue txt datei dann mit LOAD DATA LOCAL INFILE zu importieren.

    --------------

    Welche Version ist nun besser? Oder bin ich grad so blind und es gäbe eine viel einfachere Variante?

    Vielen Dank schon mal für die Hilfe

    LG, Florian

  • #2
    Ich sollte evtl. noch betonen das der DB-Import ansich kein Problem ist.

    Mein Problem liegt darin, das ich eine CSV Datei habe in der ca. 40 Spalten sind, von denen ich aber nur 10 in MySQL brauche, bzw. speichern will.

    Wie oben genannt hätte ich mir 3 Möglichkeiten zurechtgelegt mit denen es funktionieren müsste, aber ich finde die sind irgendwie viel zu aufwendig

    Ich habe z.b. keine funktion gefunden mit der ich sagen kann welche Spalten er beim einlesen aus der CSV Datei auslassen soll.

    hatte den noch nieman so nen problem?

    Kommentar


    • #3
      csv-datei zeilenweise einlesen, per explode jede zeile in ihre bestandteile zerlegen und mit insert into nur die benötigten spalten in die db schreiben.

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        hi Peter,

        also Variante 2. Oki dank dir.

        Irgendwie schade das es da keine simple funktion gibt wie für das überspringen der mysql spalten.

        mfg, flo
        Zuletzt geändert von flo_urlaub; 11.01.2006, 09:52.

        Kommentar

        Lädt...
        X