2010-11-10 11 views
20

Sto cercando di eseguire foo.sql utilizzando il comando source in MySQL.Output dei risultati sorgente MySQL per il file di registro

Quando digito il comando, il file è di provenienza di conseguenza:

mysql> source ~/foo.sql 

Ora, ci sono un sacco di dichiarazioni in corso di esecuzione in questo file e vorrei rivedere il successo/insuccesso di queste affermazioni. C'è un modo per reindirizzare i risultati delle istruzioni su un file di registro, foo.txt?

Sto pensando qualcosa sulla falsariga di:

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

Tuttavia, digitando questo comando sembra presupporre che tutto ciò che in seguito alla dichiarazione di origine è un nome di file; quindi sta provando a generare un file chiamato '~/foo.sql in outfile ~/foo.txt', che ovviamente non esiste.

+0

Hai controllato il comando 'pager'? – Konerak

risposta

37

Da all'interno del vostro client MySQL, tipo

tee session.out 

Da quel momento in poi , tutto l'I/O della sessione client corrente viene scritto nel file "session.out"

+0

Grazie, questo era esattamente quello che stavo cercando. – Isaac

+10

Inoltre, se vuoi interrompere l'output, digita 'notee' ([source] (http://dev.mysql.com/doc/refman/5.0/en/mysql-commands.html)) –

+0

Ottima risposta! ! – Amol

4

Si potrebbe fare dal prompt della shell:

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

utilizzare la riga di comando:

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

Ho provato questo, ma il file generato non contiene nulla. – Isaac

+1

Il database è stato caricato come desiderato? Solo i messaggi di errore verranno aggiunti al file. Oh, si fermerà anche al primo errore, a meno che non gli dai un'opzione a riga di comando per continuare a superare gli errori. – SorcyCat

+0

Completato senza errori all'inizio. Ho quindi provato di nuovo e impostare il mio max_allowed_packet a 5M in modo che sarebbe intenzionalmente errore. Si è verificato un errore ma foo.txt non ha elencato questo errore. – Isaac

Problemi correlati