2 votes

Comment obtenir le nombre de lignes supprimées de mysql dans le shell script.

Je ne parviens pas à faire en sorte que le client mysql renvoie le nombre de lignes supprimées au shell lors de l'exécution d'une suppression. Quelqu'un sait-il quelle option le permet ? Ou des moyens de le contourner ?

Voici ce que j'essaie, mais je n'obtiens aucun résultat :

#!/bin/bash
deleted=`mysql mydb -e "delete from mytable where insertedtime < '2010-04-01 00:00:00'"|tail -n 1`

Je m'attendais à quelque chose comme ceci comme la sortie de mysql :

deleted
999999

C'est pourquoi j'ai utilisé tail -n 1 afin de ne récupérer que le nombre et non le nom de la colonne.

Lorsque vous exécutez la commande manuellement (mysql mydb -e "delete from mytable where insertedtime < '2010-04-01 00:00:00'"), vous n'obtenez aucun résultat. Lorsque j'exécute la commande de manière interactive en utilisant le client mysql, j'obtiens ce qui suit :

mysql>delete from mytable where insertedtime < '2010-04-01 00:00:00';
Query OK, 0 rows affected (0.00 sec)

Je veux obtenir le nombre de rangs affectés dans ma variable shell.

Toute aide serait la bienvenue.

4voto

Felix Kling Points 247451

1voto

Anders B Points 534

Ajouter "-vv"

mysql mydb -e "supprimer de mytable où insertedtime < '2010-04-01 00:00:00' -vv

https://dba.stackexchange.com/questions/23527/how-can-you-output-update-insert-query-results-when-using-mysql-e-execute

0voto

moon Points 2512
 deleted=`mysql mydb -e "delete from mytable where insertedtime < '2010-04-01 00:00:00'"|tail -n 1`

 int icount = mysql_CountRow(deleted);

ça marche pour moi, essayez ceci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X