CSV-Datei in MySql Datenbank importieren

Admiral

Aktives Mitglied
Thread Starter
Dabei seit
15.03.2004
Beiträge
208
Reaktionspunkte
0
Hallo Gemeinde,

ich versuche nun seit Langem einen Weg für einen automatischen Import einer CSV-Datei ohne PHP zu realisieren. Meine bisherigen Versuche über ein AppleScript oder über eine Shell zu lösen haben irgendwo einen Denkfehler.
Beispiel AppleScript
Code:
tell application "Finder"
	
	do shell script "/usr/local/mysql/bin/[B]mysqldump[/B] -u root --password=123456 --database=MeineDB  LOAD DATA INFILE '/Users/name/Desktop/datei.csv' INTO TABLE myTable FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\\n' "
	
end tell
allerdings weiß ich gar nicht was bei "/usr/local/mysql/bin/????" genau hin muss.
Dump benutze ich bereits in einem Script für eine Datenbanksicherung, was auch prima klappt.

Ich muss das Ganze ohne PHP hin bekommen, da ich sehr viele Datensätze habe die mir einen Timeout bringen.

Am liebsten wäre mir ja eine Shell-Script aber AppleScript wäre auch ok.

Hat jemand eine Lösung?

Danke im Voraus,

Gruß und schöne Osterfeiertage.

Admiral
 
mysqldump macht einen dump und importiert nicht...
du musst einfach mysql aufrufen...
 
mysqldump macht einen dump und importiert nicht...
du musst einfach mysql aufrufen...

na ja, das habe ich natürlich auch schon gemacht, jedoch erhalte ich immer einen nicht genauer benannten Fehler. Ich erhalte nur eine Liste mit den ganzen Optionen für den Aufruf mysql, sonst nichts.
 
der fehler ist halt, dass du das statement einfach so anhängst ohne ein --execute= ...
der teil mit "LOAD DATA" ist halt ein SQL statement...
 
so, nun habe ich mal weiter getestet und mit diesem Code klappt es prima.
Zudem bin ich ja von der Geschwindigkeit des Einlesens hellauf begeistert.
Code:
data="meineDatei.csv"
sql="LOAD DATA LOCAL INFILE '$data' INTO TABLE meineTabelle FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\\r'"
mysql -u root --password=123456 -h localhost --database=meineDatenbank  --execute="$sql"

Nun habe ich aber noch ein kleines Problem mit der Textcodierung.
Ich bekomme die Datei als Macroman oder auch als latin1 codiert.
Der Mysql-Server ist per default auf utf8 eingestellt. Nun möchte ich also die Verbindung mit Macroman herstellen. Ich habe es mit --default-character-set=macroman oder latin1 versucht. Leider ohne Erfolg. Ich weiß leider auch nicht genau, an welcher Stelle dieser Befehl hingehört, habe schon viele Positionen getestet.

Habt ihr da noch mal ne Idee?

Gruß Admiral
 
Zurück
Oben Unten