CSV Datei auslesen

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

  • CSV Datei auslesen

    Hallo zusammen,

    ich habe ein größeres Problem beim Importieren einer CSV Datei in eine MySQL Datenbank. Folgende Situation:

    Ich habe ein PHP Script mit dem ich eine CSV Datei hochlade und mit dem "LOAD DATA INFILE" Statement in eine SQL Tabelle importiere. Beim importieren dieser Datei verzichte ich auf das Einlesen der ersten 7 Zeilen weil dort verschiedene Parameter angegeben sind, die überhaupt nicht in das Schema der restlichen Datei passen. So sind alle Angaben in den folgenden Zeilen mit Kommata getrennt, in den ersten 7 Zeilen wird darauf komplett verzichtet. Die Datei ist so aufgebaut das erst in Zeile 8 die richtige Tabelle beginnt. Nun möchte ich aber eine Angabe aus den ersten 7 Zeilen auslesen und in die Tabelle, die aus den restlichen Zeilen besteht, und von mir importiert wurde, einfügen.

    Hoffe das war halbwegs verständlich

    Ich habe nun aber absolut keine Idee wie ich diese Angabe in meine Tabelle bekomme. Es geht darum das die Angabe in Zeile 3 das Datum ist an dem die Datei erstellt wurde und ich diese hinter jeden Tabelleneintrag schreiben möchte.

    Falls Jemandem was dazu einfällt würde ich mich sehr freuen.

    Danke im Vorraus

    Grüße Christian

  • #2
    poste doch mal die ersten zehn zeilen dieser csv datei.

    schon vorweg die frage: sind die datein immer gleich aufgebaut?
    **********
    arkos
    **********

    Kommentar


    • #3
      Cache-Control: no-store
      Pragma: no-cache
      Last-Modified: Wed, 31 May 2006 22:45:05 GMT
      Expires: Thu, 01 Jan 1970 00:00:00 GMT
      Content-type: text/plain

      HOST_NAME, SERVICE_DESCRIPTION, TIME_OK_SCHEDULED, PERCENT_TIME_OK_SCHEDULED, PERCENT_KNOWN_TIME_OK_SCHEDULED, TIME_OK_UNSCHEDULED, PERCENT_TIME_OK_UNSCHEDULED, PERCENT_KNOWN_TIME_OK_UNSCHEDULED, TOTAL_TIME_OK, PERCENT_TOTAL_TIME_OK, PERCENT_KNOWN_TIME_OK, TIME_WARNING_SCHEDULED, PERCENT_TIME_WARNING_SCHEDULED, PERCENT_KNOWN_TIME_WARNING_SCHEDULED, TIME_WARNING_UNSCHEDULED,
      Ja, die Datei wird automatisch von einem Programm erstellt und hat immer die gleiche Struktur. Hier sieht man die Überschriften der Spalten. Danach kommt dann der Inhalt der Spalten.

      Kommentar


      • #4
        ich denke mal, dass du dann nicht drum rum kommst, die datei vorher zu parsen, und eine neue csv schreiben lässt, die den 'header' von cache-control bis text/plain nicht mehr enthält. das kannste ja mit regexp machen.

        mit der restlichen datei solltest du ja mit lines und fields terminated keine schwierigkeiten haben.

        wenn jemand eine weniger umständliche idee hat - dann wüsste ich es auch gerne
        **********
        arkos
        **********

        Kommentar


        • #5
          Hi arcos!
          wofür brauchst du die 10 zeilen?
          die erste 7 zeilen kann man auch mit dem texteditor löschen.
          die Frage ist, wenn er diese 7 zeilen in die tabelle packen will wochin werden Sie geschpeichert .
          Und das können wir leider aus seiner csv nicht sehen, auch wenn uns die ganze datei postet.
          Slava
          bituniverse.com

          Kommentar


          • #6
            ich glaube nicht, dass er die mit dem editor löschen will ich denke, das ganze soll automatisiert passieren... wenn dem nicht so ist, verstehe ich das posting eh nicht
            **********
            arkos
            **********

            Kommentar


            • #7
              Also ein MySQL 'load data infile' geht natürlich nur mit lokalen Dateien, die das entsprechende Format der Zieltabelle haben.
              In diesem Fall sollen ja noch die Datumsinfos mit dazu. Geht also wirklich nur mit einer zusätzlichen Datei, die den ganzen Spalten enthält.
              Wäre es nicht einfacher das ganze per insert in die MySQL zu pusten? Dann hast Du auch keine Sorgen mehr mit der zweiten CSV Datei.

              Gruss Niels

              Kommentar


              • #8
                Habs jetzt anders gelöst. Importiere die CSV Datei (ab Zeile 8) ganz normal über "LOAD DATA INFILE" und die 3te Zeile lese ich einfach mit PHP ein. Den String schreib ich dann einfach per Insert in alle Zeilen wo die Spalte DATUM den Wert NULL hat, da beim Einlesen der CSV Datei ja alle Spalten außer die mit dem DATUM gefüllt werden und diese leer bleibt.

                Danke für die vielen Anregungen.

                Grüße Christian

                Kommentar

                Lädt...
                X