import multiple .csv

rernanded

Neuer Benutzer
Beiträge
1
Hi, ich suche sql-Befehl um viele CSV (ca. 11.000) in Tabelle zu speichern. Die CSV befinden sich in 11.000 Unterordnern(uo) und die wiederum in einem Hauptordner (ho).

In jeder CSV ist das Trennzeichen dasselbe ###. Das Tabellenfeld in das importiert werden soll ist auch für alle dasselbe. Gleichzeitig sollen die Namen der uo in ein zweites Feld importiert werden. Am Ende müsste ich 11.000 Datensätze (je aus zwei Feldern bestehend) haben.

Ich habe wenig Erfahrung mit sql. Mit phpmyadmin zB kann ich ja nur immer eine CSV importieren. Vllt gibts eine Alternativ-Software mit der ich mein Problem auch lösen könnte.

Alternative wäre noch die 11.000 Dateien auf meine Server hochzuladen und mit php und RecursiveDirectoryIterator oder glob() zu arbeiten, aber den Zwischenschritt des Hochladens will ich nicht.

MONI
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.736
Hi, ich suche sql-Befehl um viele CSV (ca. 11.000) in Tabelle zu speichern. Die CSV befinden sich in 11.000 Unterordnern(uo) und die wiederum in einem Hauptordner (ho).

Dazu brauchst Du keinen SQL-Befehl, sondern eine für die Shell, die Dein Betriebssystem versteht.

In jeder CSV ist das Trennzeichen dasselbe ###. Das Tabellenfeld in das importiert werden soll ist auch für alle dasselbe. Gleichzeitig sollen die Namen der uo in ein zweites Feld importiert werden. Am Ende müsste ich 11.000 Datensätze (je aus zwei Feldern bestehend) haben.
Du hast also ca. 11.000 Dateien in je einem Unterordner, jede besteht aus einem Feld und einer Zeile. Das klingt nach FAIL.

Ich habe wenig Erfahrung mit sql. Mit phpmyadmin zB kann ich ja nur immer eine CSV importieren. Vllt gibts eine Alternativ-Software mit der ich mein Problem auch lösen könnte.

Sicherlich nix fertiges.

Also ich habe 3 CSV-Dateien in je einem Unterordner mit je einem Feld:
Code:
kretschmer@tux:~/mysql$ cat o1/o1.csv
o1
kretschmer@tux:~/mysql$ cat o2/o2.csv
o2
kretschmer@tux:~/mysql$ cat o3/o3.csv
o3

Und nun:
Code:
kretschmer@tux:~/mysql$ for f in $(find . -name "*.csv"); do d=$(dirname $f); c=$(cat $f) ; echo "$d,$c"; done
./o1,o1
./o2,o2
./o3,o3

So als quick & dirty - hack. Wird Dir aber wohl nicht allzu viel nutzen, so wie Du fragst vermute ich eher einen Windows-User.

Andreas
 
Oben