GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie speichere ich die Ausgabe von SHOW PROCESSLIST in einer Datei in MySQL?

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üfen

Methode 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
Hinweis: Sie benötigen Berechtigungen, um die Prozesslistenabfrage auszuführen.

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.


Linux
  1. So speichern Sie die Befehlsausgabe in einer Datei unter Linux

  2. Linux – Wie zeigt man den Dateisystemtyp über das Terminal an??

  3. Wie erfasst man die Ausgabe eines Top-Befehls in einer Datei unter Linux?

  4. Wie kann die Ausgabe des Zeitbefehls in eine Datei unter Linux umgeleitet werden?

  5. Speichern Sie die Ausgabe von date und watch in einer Datei

Wie importiere ich eine CSV-Datei in eine MySQL-Datenbank?

Ausgabe nach Stdout und gleichzeitig Grep in eine Datei?

So zeigen Sie meine Datei als Standardseite an

Wie Echo in Datei

Wie finde ich den my.cnf-Speicherort von MySQL?

MySQL-Daten können nicht in Datei ausgegeben werden