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
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.