Domanda: Ho utilizzato il comando SPOOL in Oracle SQL per memorizzare i risultati della query in un file e quando tutto è terminato, lo spool può essere disattivato. Come posso ottenere lo stesso risultato in MySQL? Ad esempio, in MySQL la query 'SHOW FULL PROCESSLIST' elencherà tutti i processi MySQL attualmente in esecuzione sullo schermo (e se è un elenco lungo, vedrai solo le ultime righe sullo schermo). Vorrei sapere se esiste un comando simile a SPOOL in MySQL per archiviare i risultati della query in un file? o almeno dovrei essere in grado di reindirizzare ( | ) l'output al comando della shell come "altro".
In ORACLE SQL:
Per memorizzare l'output del risultato della query in un file, utilizzo spool.
sqlplus> SPOOL /tmp/output.txt sqlplus> select * from UserTable; sqlplus> SPOOL off;
Risposta:per MySQL
Metodo 1:
Non esiste un comando SPOOL in MySQL, ma puoi utilizzare il comando alternativo tee per attivare la registrazione e nota per disattivare la registrazione.
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.
Ora puoi controllare il file di registro /tmp/text.txt.
Metodo 2: Puoi eseguire la query MySQL dal prompt della shell e reindirizzare l'output a altro.
$ mysql -u root -p -e "show full processlist" | more
Nota: Hai bisogno dei privilegi per eseguire la query processlist.
Metodo 3: Puoi eseguire la query dal prompt della shell e reindirizzare l'output a un file come mostrato di seguito:
$ mysql -u root -p -e "show full processlist" | tee /tmp/out.txt
(o)
$ mysql -u root -p -e "show full processlist" > /tmp/out.txt
SELECT INTO OUTFILE utilizzato per le query SELECT:
Se stai eseguendo una query select, puoi utilizzare SELECT INTO OUTFILE come mostrato di seguito:
mysql> select * into outfile '/tmp/out.txt' from user_table;
Spero che aiuti.