GNU/Linux >> Tutoriels Linux >  >> Linux

Comment stocker la sortie de SHOW PROCESSLIST dans un fichier MySQL ?

Question : J'ai utilisé la commande SPOOL dans Oracle SQL pour stocker les résultats de la requête dans un fichier et lorsque tout est terminé, le spool peut être désactivé. Comment puis-je obtenir la même chose dans MySQL? Par exemple, dans MySQL, la requête "SHOW FULL PROCESSLIST" répertorie tous les processus MySQL en cours d'exécution à l'écran (et s'il s'agit d'une longue liste, vous ne verrez que les dernières lignes à l'écran). Je voudrais savoir s'il existe une commande de type SPOOL dans MySQL pour stocker les résultats de la requête dans un fichier? ou au moins je devrais être capable de rediriger ( | ) la sortie vers la commande shell comme "more".

Dans ORACLE SQL :

Pour stocker la sortie du résultat de la requête dans un fichier, j'utilise spool.

sqlplus> SPOOL /tmp/output.txt
sqlplus> select * from UserTable;
sqlplus> SPOOL off;

Réponse :pour MySQL

Méthode 1 :

Il n'y a pas de commande SPOOL dans MySQL, mais vous pouvez utiliser la commande alternative tee pour activer la journalisation et notee pour désactiver la journalisation.

mysql> tee /tmp/test.txt
 Logging to file '/tmp/test.txt'
 mysql> show full processlist;
 +------+-----------+-----------+--------+---------+------+-------+-----------------------+
 | Id | User | Host | db | Command | Time | State | Info |
 +------+-----------+-----------+--------+---------+------+-------+-----------------------+
 | 7478 | sample | host.name| dbname | Sleep | 0 | | NULL |
 | 7479 | sample | host.name | NULL | Query | 0 | NULL | show full processlist |
 +------+-----------+-----------+--------+---------+------+-------+-----------------------+
 2 rows in set (0.00 sec)
 mysql> notee
 Outfile disabled.

Maintenant, vous pouvez vérifier le fichier journal /tmp/text.txt.

Méthode 2 :  Vous pouvez exécuter une requête MySQL à partir de l'invite du shell et rediriger la sortie vers more.

$ mysql -u root -p -e "show full processlist" | more

Remarque : Vous avez besoin de privilèges pour exécuter une requête de liste de processus.

Méthode 3 : Vous pouvez exécuter la requête à partir de l'invite du shell et rediriger la sortie vers un fichier comme indiqué ci-dessous :

$ mysql -u root -p -e "show full processlist" | tee /tmp/out.txt

(ou)

$ mysql -u root -p -e "show full processlist" > /tmp/out.txt
Remarque : Vous avez besoin de privilèges pour exécuter une requête de liste de processus.

SELECT INTO OUTFILE utilisé pour les requêtes SELECT :

Si vous exécutez une requête de sélection, vous pouvez utiliser SELECT INTO OUTFILE comme indiqué ci-dessous :

mysql> select * into outfile '/tmp/out.txt' from user_table;

J'espère que ça aide.


Linux
  1. Comment ajouter la sortie à un fichier ?

  2. Comment capturer la sortie d'une commande top dans un fichier sous Linux ?

  3. Comment ajouter le contenu de plusieurs fichiers dans un seul fichier

  4. Comment stocker la sortie de la commande dans un tableau dans Ansible ?

  5. Stocker la sortie de la commande date et watch dans un fichier

Comment importer un fichier CSV dans une base de données MySQL ?

Comment faire écho dans le fichier

Comment puis-je trouver l'emplacement MySQL my.cnf

Comment rediriger la sortie de la commande time vers un fichier sous Linux ?

Comment enregistrer la sortie de cette commande awk dans un fichier ?

Impossible de sortir les données MySQL dans le fichier