Desabilitar a saída do console ao executar um arquivo SQL usando o comando de origem MySQL

8

Começo iniciando a ferramenta de linha de comando MySQL:

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

A última -bopção é usada para desativar o sinal sonoro em caso de erro.

Então eu escolho um banco de dados:

use Mydatabasename;

Então eu executo o SQL de um arquivo como este:

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

É quando as coisas vão devagar. Eu já executei parte do arquivo antes, então o console é preenchido com erros de linha duplicados que atrasam muito a execução. Eu recebo de 5 a 10 instruções executadas por segundo. Sem linhas duplicadas, o código executa dezenas de milhares de instruções (30k +) a cada 5 segundos.

Eu preciso fazer isso, pois o arquivo é grande e não posso executá-lo de uma só vez.

Mzn
fonte

Respostas:

10

Aqui está o problema. O sistema operacional possui dois modos para imprimir coisas

  • stdout
  • stderr

O --silent único afeta o stdout. Como você unha stderr?

Tente um dos seguintes e veja se funciona:

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

De uma chance !!!

CAVEAT: Eu lidei com algo antes antes de responder a uma pergunta sobre o mysqldump: Como registrar uma saída detalhada do mysqldump?

RolandoMySQLDBA
fonte
"2> nul" significa redirecionar o segundo fluxo de saída (stderr) para nada? Acabei de executar meu grande script e acho que ainda está passando pelas duplicatas (não usei o silencioso apenas 2> nul). Acho que vou precisar dividir o arquivo de origem ... Muito obrigado.
Mzn 19/10/12
11
Sim, a saída para NULescreve absolutamente nada. Você poderia fazer 2>stderr.txtse quiser.
RolandoMySQLDBA 19/10/12