Comment exécuter une seule requête via mysql à partir de la ligne de commande?


157

Je cherche à pouvoir exécuter une seule requête sur un serveur distant dans une tâche scriptée.

Par exemple, intuitivement, j'imagine que ça donnerait quelque chose comme:

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"

Réponses:


249
mysql -u <user> -p -e "select * from schema.table"

3
C: \ Program Files (x86) \ MySQL \ MySQL Server 5.7 \ bin> mysql.exe -u root -p -e "ma requête" ----> ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: OUI)
Dr.jacky

2
Cela devrait être le premier résultat d'une recherche sur google (pour "mysql exec sql à partir de la ligne de commande") et non sur l'énorme site mysql!
Guillaume Bois

4
De plus, si vous souhaitez mysql -u <user> -p -B --disable-column-names -e 'select * from schema.table'
supprimer le

2
@tinybyte En supposant que Linux: Insinde double guillemets l'astérisque *est étendu à tous les fichiers du répertoire actuel, alors que cette expansion ne se produit pas par guillemets simples, c'est la raison pour laquelle. Les guillemets doubles fonctionneront pour les requêtes sans l'extension *.
NobbZ

2
@ Dr.jacky Je suis sûr que vous n'en avez plus vraiment besoin, mais pour l'avenir, si votre utilisateur root n'a pas de mot de passe, ne passez pas l'option -p comme vide, ne la passez pas du tout iemysql.exe -u root -e "my query"
solidau

29
mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"

À partir de l'impression d'utilisation:

-e, --execute=name
Exécutez la commande et quittez. (Désactive --forceet fichier d'historique)


15

voici comment vous pouvez le faire avec une astuce de shell cool:

mysql -uroot -p -hslavedb.mydomain.com mydb_production <<< 'select * from users'

'<<<' demande au shell de prendre tout ce qui le suit comme stdin, similaire au piping de echo.

utilisez l'indicateur -t pour activer la sortie au format table


13

S'il s'agit d'une requête que vous exécutez souvent, vous pouvez la stocker dans un fichier. Puis à chaque fois que vous souhaitez l' exécuter :

mysql < thefile

(avec tous les indicateurs de connexion et de base de données bien sûr)


6
echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.