Désactiver la sortie de la console lors de l'exécution d'un fichier SQL à l'aide de la commande source MySQL

8

Je commence par lancer l'outil de ligne de commande MySQL:

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

La dernière -boption est utilisée pour désactiver le bip en cas d'erreur.

Ensuite, je choisis une base de données:

use Mydatabasename;

Ensuite, j'exécute un formulaire SQL comme ceci:

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

C'est alors que les choses vont lentement. J'ai déjà exécuté une partie du fichier afin que la console soit remplie d'erreurs de ligne en double qui ralentissent mal l'exécution. J'obtiens 5 à 10 instructions exécutées par seconde. Sans lignes en double, le code exécute des dizaines de milliers d'instructions (30k +) toutes les 5 secondes.

Je dois le faire car le fichier est volumineux et je ne peux pas l'exécuter en une seule fois.

Mzn
la source

Réponses:

10

Voici le problème. L'OS a deux modes pour imprimer des choses

  • stdout
  • stderr

Le --silent seul affecte stdout. Comment clouez-vous stderr?

Essayez l'une des solutions suivantes et voyez si cela fonctionne:

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

Essaie !!!

CAVEAT: J'ai déjà traité quelque chose comme ça avant de répondre à une question sur mysqldump: comment enregistrer la sortie verbeuse de mysqldump?

RolandoMySQLDBA
la source
Est-ce que "2> nul" signifie rediriger le deuxième flux de sortie (stderr) vers rien? Je viens d'exécuter mon gros script et je pense qu'il passe toujours par les doublons (n'a pas utilisé le silence 2> nul). Je pense que je vais devoir diviser le fichier source ... Merci beaucoup.
Mzn
1
Oui, la sortie NULn'écrit absolument rien. Tu pourrais faire 2>stderr.txtsi tu veux.
RolandoMySQLDBA