Hallo,
1.: Ist es moeglich, statt des Statements einen Dateinamen einer SQL-Datei zu uebergeben, die ausgefuehrt werden soll?
siehe dedlfix' Antwort.
2.: Kann man das Format der Ausgabe individuell vorgeben? (XML-Ausgabe kann man laut Doku vorgeben, aber CSV nicht).
individuell nicht, aber Du hast im Batchmodus, den Du entweder mit
-b
oder durch Einlesen der Statements aus einer Datei, was Du ja vorhast, bekommst, nahezu schon tabulatorgetrenntes CSV-Format. Vier spezielle Zeichen sind maskiert, siehe Handbuch, Option --raw.
Folgendes müsste doch ausreichen (ich hoffe, ich habe nichts übersehen):
Für jede Zeile
Entferne das Zeilenende
Trenne am Tabulator
Für jeden Eintrag
Verdopple das Begrenzungszeichen
Entferne die Transportsicherung bei maskierten Zeichen
Packe (wenn nötig) den Eintrag in Begrenzungszeichen [1]
Ende Für
Verbinde alle Einträge mit dem gewünschten Feldtrennzeichen
Hänge das gewünschte Zeilenendezeichen an
Ende Für
sollte nicht zu schwer umzusetzen sein. Muss ja nicht Shellskript sein, könnte auch in $programmiersprache gelöst sein, könnte aber von STDIN lesen und nach STDOUT ausgeben, damit Du die Ausgabe von mysql einfach durchpipen kannst.
Freundliche Grüße
Vinzenz