Archiv für den Monat: April 2013

mysqlimport und die fehlende SET Option

Da ich erst letztens aus einer Datenbank eine Tabelle extrahieren wollte und in eine Andere übertragen, dies aber nicht auf dem direkten Weg ging, musste ich einen Umweg über eine batch Datei nehmen.
Wäre der MySQL Server und die exportierte Tabelle auf dem gleichen Rechern, hätte ich den „LOAD DATA INFILE“ verwendet.
Da dem nicht so war verwendete ich das mysqlimport Programm. Dort fehlt aber leider der SET Befehl für das parsen der Datumswerte.
Nach längerem verwirrtem Suchen fand ich eine Lösung.

Die Zeile lautet nun folgendermaßen:


c:\mysqlimport.exe --no-defaults --default-character-set=utf8 --local --delete -v -h 192.168.54.2 --port=3306 -u %dbuser% -p%pw% --ignore-lines=1 --fields-terminated-by="|" --lines-terminated-by="\r\n" --columns="id,MitarbeiterID,Mitarbeitername,Rollenname,Archiv,TrainingID,StatusID,Trainingsname, TerminID,@startdate,@enddate,@dummy,@dummy,@dummy,Temp,@dummy) SET StartDate = STR_TO_DATE(@startdate, '%%d.%%m.%%Y %%H:%%i:%%s'), EndDate = STR_TO_DATE(@enddate, '%%d.%%m.%%Y %%H:%%i:%%s'" %dbname% c:\mitarbeiter_trainings.txt

Wie oben auf der Seite steht, muss der SET Befehl in die –columns eingeflochten werden. Dabei beachten, die Spaltennamenangabe mit einem „)“ zu beenden und am Ende der –columns Angabe die abschließende Klammer weglassen. Nur noch das Prozentzeichen mit ebensolchem escapen und schon funktionierte alles wie gewollt.