Otázka: Použil jsem příkaz SPOOL v Oracle SQL pro ukládání výsledků dotazu do souboru, a když je vše hotovo, zařazování lze vypnout. Jak mohu dosáhnout stejného v MySQL? Například v MySQL dotaz „ZOBRAZIT ÚPLNÝ SEZNAM PROCESŮ“ zobrazí na obrazovce všechny procesy MySQL, které aktuálně běží (a pokud se jedná o dlouhý seznam, uvidíte na obrazovce pouze několik posledních řádků). Chtěl bych vědět, zda v MySQL existuje příkaz podobný SPOOL pro ukládání výsledků dotazu do souboru? nebo bych alespoň měl být schopen převést výstup ( | ) do příkazu shellu jako „more“.
V ORACLE SQL:
K uložení výstupu výsledku dotazu do souboru používám spool.
sqlplus> SPOOL /tmp/output.txt sqlplus> select * from UserTable; sqlplus> SPOOL off;
Odpověď:Pro MySQL
Metoda 1:
V MySQL není žádný příkaz SPOOL, ale můžete použít alternativní příkaz tee zapněte protokolování a poznámku pro vypnutí protokolování.
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.
Nyní můžete zkontrolovat soubor protokolu /tmp/text.txt.
Metoda 2: Můžete spustit dotaz MySQL z příkazového řádku a výstup přesměrovat na další.
$ mysql -u root -p -e "show full processlist" | more
Poznámka: Ke spuštění dotazu na procesní seznam potřebujete oprávnění.
Metoda 3: Dotaz můžete spustit z příkazového řádku shellu a přesměrovat výstup do souboru, jak je ukázáno níže:
$ mysql -u root -p -e "show full processlist" | tee /tmp/out.txt
(nebo)
$ mysql -u root -p -e "show full processlist" > /tmp/out.txt
SELECT DO OUTFILE se používá pro SELECT dotazy:
Pokud provádíte výběrový dotaz, můžete použít SELECT INTO OUTFILE, jak je uvedeno níže:
mysql> select * into outfile '/tmp/out.txt' from user_table;
Doufám, že to pomůže.