Hi dedlfix.
mysql ..... -e "select ..."
1.: Ist es moeglich, statt des Statements einen Dateinamen einer SQL-Datei zu uebergeben, die ausgefuehrt werden soll?Klar, so wie du das Ergebnis "wegpipen" kannst (>), kannst du auch anderen Daten "hinpipen" (<). Steht aber als Beispiel im Handbuchkapitel zu mysql.
Prima. Ich verstehe zwar nicht ganz, warum das funktoniert, wenn das Statement ohne Parameterangabe (-e o.ae.) einfach reingepiped wird, aber wenn es funktioniert, ist mir auch einigermassen egal, warum :-)
2.: Kann man das Format der Ausgabe individuell vorgeben? (XML-Ausgabe kann man laut Doku vorgeben, aber CSV nicht).
Dafür stehen dir alle Möglichkeiten des SELECT-Statements zur Vefügung.
Wieder Prima. Mir war nicht klar, dass, wie inzwischen beobachtet, die Daten standardmaessig Leerzeichen-separiert zurueckgegeben werden. Dann ist das CSV-Format natuerlich problemlos moeglich.
Und noch eine etwas andere Frage: Vorher beim Einlesen eines SQL-Files von geschaetzter Groesse von 4MB bekamen wir einen Fehler, dass die Groesse des Inputs groesser als MAX_ALLOWED_PACKET sei. Der Default-Wert davon ist 16MB. Sogar nach hochsetzten des Wertes auf ca. 100MB kam derselbe Fehler. Wir haben das Zeug einlesen koennen, nachdem wir es gefuenftelt haben und jeweils 10000 Datensaetze auf einmal eingetragen haben. Schon 20000 Datensaetze (ca. 1.5MB) wurden mit dem Verweis auf MAX_ALLOWED_PACKET abgelehnt. Warum?
War das ein großes Multi-INSERT-Statement oder pro Datensatz ein INSERT?
Ein Multi-Insert. Das duerfte wohl einen entscheidenden Unterschied gemacht haben, jetzt, wo ich weiss, dass die serverseitige MAX_ALLOWED_PACKET-Groesse ueberschritten wurde. Ich hatte unter Packet-Groesse zunaechst die Datei-Groesse beim Einlesen vermutet. Aber mit Vinzenz' Hilfe weiss ich nun ohnehin, wo das Problem lag.
Ich werde die Dinge heute noch alle ausprobieren und bin dafuer dann nun mal wieder ne Weile weg...
Vielen Dank Dir und auch Vinzenz und Tom, ich bin auf jeden Fall schon mal viel weiter.
Viele Gruesse,
der Bademeister