Disabilitare l'output della console quando si esegue un file SQL utilizzando il comando sorgente MySQL


8

Comincio lanciando lo strumento da riga di comando MySQL:

mysql --user=myusername --password=mypassword --silent --force -b

L'ultima -bopzione viene utilizzata per disabilitare il segnale acustico in caso di errore.

Quindi scelgo un database:

use Mydatabasename;

Quindi eseguo SQL da un file come questo:

source c:\x\y\z\myfile.sql

Questo è quando le cose vanno lentamente. Ho già eseguito parte del file in precedenza, quindi la console è piena di errori di riga duplicati che rallentano l'esecuzione in modo errato. Ottengo 5-10 dichiarazioni eseguite al secondo. Senza righe duplicate il codice esegue decine di migliaia di istruzioni (30k +) ogni 5 secondi.

Devo farlo poiché il file è grande e non posso eseguirlo in una volta sola.

Risposte:


10

Ecco il problema Il sistema operativo ha due modalità per stampare le cose

  • stdout
  • stderr

L' --silent unico riguarda stdout. Come si inchioda lo stderr?

Prova una delle seguenti soluzioni e verifica se funziona:

mysql --user=myusername --password=mypassword --silent --force -b 2> nul
mysql --user=myusername --password=mypassword --silent --force -b --tee=nul

Provaci !!!

CAVEAT: Ho già affrontato qualcosa di simile prima di rispondere a una domanda su mysqldump: Come registrare un output dettagliato da mysqldump?


"2> nul" significa reindirizzare il secondo flusso di output (stderr) su nulla? Ho appena eseguito il mio grande script e penso che stia ancora attraversando i duplicati (non ho usato silent solo 2> nul). Penso che dovrò dividere il file sorgente ... Mille grazie.
Mzn

1
Sì, l'output per non NULscrive assolutamente nulla. Puoi fare 2>stderr.txtse vuoi.
RolandoMySQLDBA
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.