Frage: Ich habe den SPOOL-Befehl in Oracle SQL verwendet, um Abfrageergebnisse in einer Datei zu speichern, und wenn alles fertig ist, kann Spool deaktiviert werden. Wie kann ich dasselbe in MySQL erreichen? Beispielsweise listet die Abfrage „SHOW FULL PROCESSLIST“ in MySQL alle MySQL-Prozesse auf, die derzeit auf dem Bildschirm ausgeführt werden (und wenn es sich um eine lange Liste handelt, sehen Sie nur die letzten paar Zeilen auf dem Bildschirm). Ich würde gerne wissen, ob es in MySQL einen SPOOL-ähnlichen Befehl zum Speichern der Abfrageergebnisse in einer Datei gibt? oder zumindest sollte ich in der Lage sein, die Ausgabe an einen Shell-Befehl wie "more" weiterzuleiten ( | ).
In ORACLE-SQL:
Um die Ausgabe des Abfrageergebnisses in einer Datei zu speichern, verwende ich spool.
sqlplus> SPOOL /tmp/output.txt sqlplus> select * from UserTable; sqlplus> SPOOL off;
Antwort:Für MySQL
Methode 1:
Es gibt keinen SPOOL-Befehl in MySQL, aber Sie können den alternativen Befehl tee verwenden um die Protokollierung einzuschalten und notee , um die Protokollierung auszuschalten.
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.
Jetzt können Sie die Protokolldatei /tmp/text.txt.
überprüfenMethode 2: Sie können eine MySQL-Abfrage über die Shell-Eingabeaufforderung ausführen und die Ausgabe an more weiterleiten.
$ mysql -u root -p -e "show full processlist" | more
Hinweis: Sie benötigen Berechtigungen, um die Prozesslistenabfrage auszuführen.
Methode 3: Sie können die Abfrage von der Shell-Eingabeaufforderung ausführen und die Ausgabe wie unten gezeigt in eine Datei umleiten:
$ mysql -u root -p -e "show full processlist" | tee /tmp/out.txt
(oder)
$ mysql -u root -p -e "show full processlist" > /tmp/out.txt
SELECT INTO OUTFILE wird für SELECT-Abfragen verwendet:
Wenn Sie eine Auswahlabfrage ausführen, können Sie SELECT INTO OUTFILE wie unten gezeigt verwenden:
mysql> select * into outfile '/tmp/out.txt' from user_table;
Hoffe es hilft.