2010-11-10 7 views
20

Ich versuche foo.sql mit dem Quellbefehl in MySQL auszuführen.Ausgabe der Ergebnisse der MySQL-Quelle an die Protokolldatei

Wenn ich den Befehl eingeben, wird die Datei entsprechend gelesen:

mysql> source ~/foo.sql 

Nun gibt es viele Aussagen in dieser Datei ausgeführt wird, und ich möchte den Erfolg/Misserfolg dieser Aussagen überprüfen. Gibt es eine Möglichkeit, die Ergebnisse der Anweisungen in eine Protokolldatei foo.txt zu pipen?

ich etwas entlang der Linien von denke:

mysql> source ~/foo.sql into outfile ~/foo.txt 

scheint jedoch diesen Befehl eingeben, dass alles übernehmen im Anschluss an die Quelle-Anweisung ist ein Dateiname; Es versucht also, eine Datei namens '~/foo.sql in outfile ~/foo.txt' zu finden, die offensichtlich nicht existiert.

+0

Haben Sie den Befehl 'Pager' überprüft? – Konerak

Antwort

37

aus Ihrem MySQL-Client-Typ

tee session.out 

Von diesem Punkt an Die gesamte E/A von Ihrer aktuellen Clientsitzung wird in die Datei 'session.out'

geschrieben
+0

Danke, das war genau das was ich gesucht habe. – Isaac

+10

Wenn Sie die Ausgabe stoppen möchten, geben Sie einfach 'notee' ein ([source] (http://dev.mysql.com/doc/refman/5.0/en/mysql-commands.html)) –

+0

Große Antwort! ! – Amol

4

Man konnte es von der Shell-Prompt tun:

$ mysql -p dbname <foo.sql> foo.txt 
2

die Befehlszeile verwenden:

mysql -p dbname < ~/foo.sql > ~/foo.txt 
+0

Ich habe das versucht, aber die generierte Datei enthält nichts. – Isaac

+1

Wurde die Datenbank so geladen, wie Sie es wollten? Nur Fehlermeldungen werden der Datei hinzugefügt. Oh, es wird auch beim ersten Fehler aufhören, es sei denn, Sie geben ihm eine Befehlszeilenoption, um Fehler weiter zu machen. – SorcyCat

+0

Es wurde zunächst ohne Fehler abgeschlossen. Ich habe es dann erneut ausprobiert und mein max_allowed_packet auf 5M gesetzt, so dass es absichtlich einen Fehler gab. Es wurde ein Fehler angezeigt, aber foo.txt hat diesen Fehler nicht aufgelistet. – Isaac

Verwandte Themen