Knud Schröder: Einlesen beliebig vieler CSV-Dateien

Hallo!

Schon wieder ein neues Problem!
Bisher habe ich immer CSV-Dateien bequem mittels phpmyadmin eingespielt.
Jetz hab ich aber in einem Verzeichnis fast 400 CSV-Dateien liegen, die ich gerne in ein und dieselbe Tabelle einfügen möchte.

Ich hab leider noch gar keine Erfahrung mit dem Auslesen von Inhaltsverzeichnissen, um die Dateinamen zu bekommen, die ich dann in
einer Schleife mittels
Load data infile '$dateiname' into table tabelle1 fields terminated by ',' lines terminated by '/r/n'; einlesen würde.

Oder könnte ich sogar für $dateiname *.csv angeben??

Danke im Voraus für Eure Hilfe!

Gruß,

Knud

  1. Hi,

    Jetz hab ich aber in einem Verzeichnis fast 400 CSV-Dateien liegen, die ich gerne in ein und dieselbe Tabelle einfügen möchte.

    copy *.csv > alle.csv

    Oder so ähnlich. Ungetestet. Sprich: Warum machst Du nicht einfach aus den 400 Dateien eine? :-)

    Cheatah

    1. Hi,

      copy *.csv > alle.csv

      hatte ich auch schon probiert. Kommt die Fehlermeldung:
      Datei kann nicht auf sich selbst kopiert werden. Schade eigentlich.

      Oder so ähnlich. Ungetestet. Sprich: Warum machst Du nicht einfach aus den 400 Dateien eine? :-)

      Wär mir genauso recht. Hab aber ebenso noch keine Lösung gefunden (s.o.)

      Gruß,

      Knud

      1. Hallihallo

        copy *.csv > alle.csv

        hatte ich auch schon probiert. Kommt die Fehlermeldung:
        Datei kann nicht auf sich selbst kopiert werden. Schade eigentlich.

        Sollte schon funktionieren, nicht aber, wenn es bereits eine Datei namens alle.csv gibt; falls dem so ist, kannst du diese ja einfach umbenennen.

        Auf welchem System arbeitest du? - Linux, Win.
        Falls Linux, hat dir Michael eine Lösung präsentiert, falls Windows kann ich vielleicht behilflich sein:

        --- kopiii.bat ---
        echo  > all.cvs
        FOR %%var IN (*.cvs) DO type %%var >> alle.cvs
        --- /kopiii.bat ---

        Viele Grüsse

        Philipp

    2. Hi Cheatah,

      copy *.csv > alle.csv

      bist Du sicher, daß Du wirklich "copy" meinst und nicht "cat"?

      Ich würde dieses Duplizieren bleiben lassen (kostet immerhin Plattenplatz)
      und statt dessen in der Shell eine Schleife verwenden:

      #!/bin/ksh
      for FILE in *.csv
          do
             <import_this_file> ${FILE}
      done

      Viele Grüße
            Michael

      1. Hallo Michael,

        also Plattenplatz ist nicht das Problem.
        Eher, dass ich vergessen hab zu erwähnen, dass das ein PHP-Script sein müsste und es auf einem Win2000-Server läuft (Apache + MySQL).

        (Kopier aber grad die Dateien auf ein Unix-System, mach da ein type auf alle in eine Datei und kopier mir diese wieder zurück. Ist zwar tierisch
        umständlich aber erstmal gehts ja nicht anders.

        Gruß,

        Knud

        1. Hoi,

          Eher, dass ich vergessen hab zu erwähnen, dass das ein PHP-Script
          sein müsste und es auf einem Win2000-Server läuft (Apache + MySQL).

          http://www.php.net/manual/en/function.opendir.php
          http://www.php.net/manual/en/function.readdir.php
          http://www.php.net/manual/en/function.closedir.php

          Gruesse,
           CK

      2. Hi Michael,

        copy *.csv > alle.csv
        bist Du sicher, daß Du wirklich "copy" meinst und nicht "cat"?

        ja. Ich bin allerdings nicht sicher, ob ich statt "copy" vielleicht "type" meine ;-) Mit Windows habe ich solche Scherze schon lange nicht mehr versucht, musst Du wissen...

        Ich würde dieses Duplizieren bleiben lassen (kostet immerhin Plattenplatz)

        del /?
        bzw.
        man rm

        ;-)

        Cheatah