CSV-Datei in MySql Datenbank importieren

Admiral

Mitglied
Thread Starter
Mitglied seit
15.03.2004
Beiträge
207
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
 

oneOeight

Aktives Mitglied
Mitglied seit
23.11.2004
Beiträge
56.716
mysqldump macht einen dump und importiert nicht...
du musst einfach mysql aufrufen...
 

Admiral

Mitglied
Thread Starter
Mitglied seit
15.03.2004
Beiträge
207
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.
 

Admiral

Mitglied
Thread Starter
Mitglied seit
15.03.2004
Beiträge
207
Ansonsten kannst du auch einfach ein Tool verwenden: http://www.sequelpro.com/
Hm, werde mir das Programm mal ansehen. Aber es sollte ja völlig automatisch ablaufen. Manuell kann ich auch einen Import mit CocoaMySql machen.
Ist aber nicht Sinn der Sache.
 

oneOeight

Aktives Mitglied
Mitglied seit
23.11.2004
Beiträge
56.716
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...
 

Admiral

Mitglied
Thread Starter
Mitglied seit
15.03.2004
Beiträge
207
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
 
Oben