2010-04-13 5 views
2

Je n'arrive pas à trouver comment obtenir le client mysql pour retourner le nombre de lignes supprimées au shell lors d'une suppression. Est-ce que quelqu'un sait quelle option permettra cela? Ou des moyens de contourner cela?Comment obtenir le nombre de lignes supprimées de mysql dans le script shell

Voici ce que je suis en train, mais je ne vois aucun résultat:

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

Je me attendais quelque chose comme ce que la sortie de MySQL:

deleted 
999999 

Ce qui est pourquoi j'ai la queue -n 1 donc je prends seulement le compte et pas le nom de la colonne. Lorsque vous exécutez la commande à la main (mysql mydb -e "supprimer de mytable où inséré < '2010-04-01 00:00:00'") il n'y a pas de sortie. Lors de l'exécution de la commande interactive lors de l'exécution du client mysql i ge les éléments suivants:

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

Je veux obtenir les lignes affectées nombre dans ma variable shell.

Toute aide serait grandement appréciée.

+0

Quelle sortie la commande ne vous donne quand vous le lancez manuellement? (S'il vous plaît modifier votre question et de fournir un exemple de la sortie.) –

+0

Si la requête a été réussie, la sortie wi ll sera quelque chose comme 'Query OK, 1 ligne affectée (0.06 sec)' –

+0

* Dupliquer: * http://stackoverflow.com/questions/1083866/how-to-get-number-of-rows-affected-while-executing -mysql-query-from-bash –

Répondre

2
+0

Salut Felix, lors de l'exécution de la commande à partir du shell avec l'option -e je ne reçois aucune sortie, donc je ne reçois pas 'Requête OK, 1 ligne affectée (0.06 sec)' – simonlord

+0

@simonlord: Oops ne le savait pas ... laissez-moi réfléchir à nouveau. –

+0

Acclamations pour le lien Felix - essayé de chercher des réponses plus tôt - suppose que je n'ai pas utilisé les bons mots-clés. – simonlord

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


int icount = mysql_CountRow(deleted); 

cela fonctionne pour moi essayer ceci.

+0

Quand je google pour 'mysql_CountRow' je n'obtiens qu'un seul résultat: votre réponse;) –

Questions connexes