Deaktivieren Sie die Konsolenausgabe, wenn Sie eine SQL-Datei mit dem Befehl MySQL source ausführen

8

Ich beginne mit dem Starten des MySQL-Befehlszeilentools:

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

Die letzte -bOption wird verwendet, um den Signalton bei einem Fehler zu deaktivieren.

Dann wähle ich eine Datenbank:

use Mydatabasename;

Dann führe ich SQL aus einer Datei wie folgt aus:

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

Dann geht es langsam voran. Ich habe bereits einen Teil der Datei ausgeführt, sodass die Konsole mit doppelten Zeilenfehlern gefüllt ist, die die Ausführung stark verlangsamen. Ich bekomme 5-10 Anweisungen pro Sekunde ausgeführt. Ohne doppelte Zeilen führt der Code alle 5 Sekunden Zehntausende von Anweisungen (über 30.000) aus.

Ich muss dies tun, da die Datei groß ist und ich sie nicht auf einmal ausführen kann.

Mzn
quelle

Antworten:

10

Hier ist das Problem. Das Betriebssystem verfügt über zwei Modi zum Drucken

  • stdout
  • stderr

Das --silent betrifft nur stdout. Wie nagelt man stderr?

Probieren Sie eine der folgenden Möglichkeiten aus und prüfen Sie, ob sie funktioniert:

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

Versuche es !!!

CAVEAT: Ich habe mich bereits zuvor mit etwas befasst, als ich eine Frage zu mysqldump beantwortete: Wie protokolliere ich eine ausführliche Ausgabe von mysqldump?

RolandoMySQLDBA
quelle
Bedeutet "2> nul", den zweiten Ausgabestream (stderr) auf nichts umzuleiten? Ich habe gerade mein großes Skript ausgeführt und ich denke, es geht immer noch durch die Duplikate (ich habe nicht nur 2> nul stumm verwendet). Ich denke, ich muss die Quelldatei teilen ... Vielen Dank.
Mzn
1
Ja, Ausgabe NULschreibt absolut nichts. Sie könnten tun, 2>stderr.txtwenn Sie wollen.
RolandoMySQLDBA