Deshabilite la salida de la consola al ejecutar un archivo SQL usando el comando fuente MySQL


8

Comienzo iniciando la herramienta de línea de comandos MySQL:

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

La última -bopción se utiliza para deshabilitar el pitido en caso de error.

Luego elijo una base de datos:

use Mydatabasename;

Luego ejecuto SQL desde un archivo como este:

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

Ahí es cuando las cosas van despacio. He ejecutado parte del archivo antes, por lo que la consola está llena de errores de fila duplicados que ralentizan la ejecución. Recibo 5-10 declaraciones ejecutadas por segundo. Sin filas duplicadas, el código ejecuta decenas de miles de declaraciones (30k +) cada 5 segundos.

Necesito hacer esto ya que el archivo es grande y no puedo ejecutarlo de una vez.

Respuestas:


10

Aquí está el problema. El sistema operativo tiene dos modos para imprimir cosas

  • stdout
  • stderr

El --silent único afecta a stdout. ¿Cómo se clava stderr?

Pruebe uno de los siguientes y vea si funciona:

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

Darle una oportunidad !!!

CAVEAT: He tratado con algo de esto antes al responder una pregunta sobre mysqldump: ¿Cómo registrar la salida detallada de mysqldump?


¿Significa "2> nul" redirigir el segundo flujo de salida (stderr) a nada? Acabo de ejecutar mi gran script y creo que todavía está pasando por los duplicados (no usé el silencio solo 2> nul). Creo que tendré que dividir el archivo fuente ... Muchas gracias.
Mzn

1
Sí, la salida a NULescribe absolutamente nada. Podrías hacerlo 2>stderr.txtsi quieres.
RolandoMySQLDBA
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.