Einlesen beliebig vieler CSV-Dateien
Knud Schröder
- datenbank
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
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
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
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
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
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
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
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