66 Stimmen

Wie erhält man die Anzahl der betroffenen Zeilen beim Ausführen einer MySQL-Abfrage von der bash aus?

Ich weiß, wie man MySQL-Abfragen / Befehle von der Bash ausführen kann:

mysql -u[user] -p[pass] -e "[mysql commands]"

oder

mysql -u[user] -p[pass] `<<`QUERY_INPUT

[mysql commands]

QUERY_INPUT

Wie kann ich feststellen, wie viele Zeilen von der Abfrage betroffen waren?
Ich habe versucht:

variable='`mysql -u[user] -p[pass] -e "[mysql commands]"`'

Es führt den Befehl aus, aber gibt nicht die Anzahl der betroffenen Zeilen zurück.

98voto

Ken Keenan Punkte 9598

Setzen Sie

SELECT ROW_COUNT();

als letzte Anweisung in Ihrem Batch und analysieren Sie die Ausgabe

0 Stimmen

Ja, dies funktioniert und ist eleganter und einfacher, um die Ausgabe zu analysieren. Vielen Dank, das war sehr hilfreich.

2 Stimmen

Dies wurde in MySQL 5 eingeführt. Wenn Sie immer noch Version 4.x verwenden, müssen Sie die Ausgabe parsen.

0 Stimmen

Benutze die Antwort von @florin.bunau, es ist besser, um zu sehen, wie viele Zeilen aktualisiert/ eingefügt/ entfernt wurden.

36voto

florin.bunau Punkte 1795

Bei Betrachtung der Dokumentation scheint die Verwendung von -v mindestens 3 Mal dazu zu führen, dass MySQL ausführlicher wird und ausgibt, wie viele Zeilen betroffen sind. Beispiel:

mysql -vvv ...

Referenz:

https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html#option_mysql_verbose

7 Stimmen

-vvv ist großartig, wenn Sie mehr Details wünschen, einschließlich der Abfrageausführungszeit.

0 Stimmen

@Qtax, Gibt es einen Unterschied zwischen -v und -vvv?

1 Stimmen

@Pacerier, ja, sie sind verschieden. Für jede v, die Sie hinzufügen, erhalten Sie eine erhöhte Verbose und mehr Informationen (wie Abfrageausführungszeiten usw.).

4voto

Jason Punkte 393

Keine Antwort, aber nützliche Ergänzung, Sie könnten auch die anderen MySQL-Informationen Funktionen (zu denen auch ROW_COUNT() gehört) ausprobieren, um Ihnen die spezifischen Informationen zu geben, die Sie benötigen. Siehe MySQL-Referenz hier

1 Stimmen

Wie hilft dies, wenn ich eine Aktualisierungsanfrage ausführe und sehen möchte, wie viele Zeilen geändert wurden?

0 Stimmen

Es gibt keine "ausführliche Dump" nirgendwo in einer der aktuellen Antworten oder der Frage...

0 Stimmen

Wenn Sie sich die Funktionsreferenz in diesem Link angesehen haben, ROW_COUNT() ist eine der Funktionen und es wird angegeben, dass es "Die Anzahl der aktualisierten Zeilen" liefert. Warum also das Downvote?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X