9 votes

Création d'un fichier .bat pour exécuter mysql et d'autres commandes

Je cherche un moyen de réduire le nombre de saisies que je fais pour vérifier les entrées mysql et d'autres choses. Par exemple, je souhaite créer un fichier .bat qui exécutera les commandes suivantes.

mysql -u user -p
*enter in the password*
USE databasename
SELCT * FROM table;

Le problème est qu'après la commande initiale mysql -u user -p, le reste des commandes écrites ne sont pas exécutées. Est-il possible de continuer à exécuter des commandes après avoir appelé quelque chose comme mysql ou d'autres programmes, qui semblent ajouter leur préfixe ( ?) au début des commandes (mysql>). Je ne suis pas très familier avec la terminologie, alors pardonnez-moi si cela vous semble confus. J'aimerais utiliser le même genre de concept pour d'autres choses également.

Toute aide est la bienvenue, Merci.

8voto

Michael Mao Points 2291

Vous pouvez exécuter mysql en mode batch, comme indiqué dans la section documentation .

mysql -h host -u user -p < batch-file

En gros, vous utilisez un fichier contenant toutes vos commandes comme paramètre d'entrée - mysql exécutera le contenu de ce fichier.


Edit : Si vous voulez construire votre requête à la volée, vous pouvez toujours faire en sorte que votre fichier batch écrive une requête dans un fichier temporaire que vous pouvez ensuite charger pour exécution par mysql. Par exemple :

echo show tables from test > C:\path\to\file.sql
mysql -h host -u user -p < C:\path\to\file.sql

5voto

arcadius Points 151

Exécuter mysql mit Option -e :

mysql -h host -u user -p -e 'SHOW TABLES FROM test'

2voto

Josh Foskett Points 181

Vous pouvez peut-être essayer une petite astuce qui a émergé d'une autre question dans ce forum (qui a été supprimée malheureusement).

Vous pouvez insérer les données d'entrée d'une commande directement dans les lignes situées sous la commande, puis exécuter le fichier NON PAS en tant que fichier Batch, mais en tant qu'entrée por cmd.exe (ceci est similaire à une ici le document dans Unix). Par exemple :

script.TXT :

@echo off
mysql -u user -p
*enter in the password*
USE databasename
SELCT * FROM table;
EXIT
echo Exit from MYSQL...

Exécutez le "script" précédent de cette façon :

cmd < script.TXT

Si vous réalisez ce test, veuillez rapporter le résultat...

Antonio

0voto

Gpak Points 111

Vous pourriez écrire quelque chose comme ceci

mysql -u dbUsername yourDatabase -e "SELECT * FROM table;"

Ou pour exécuter des tâches répétitives, créez un fichier runtasks.bat, enregistrez-le à la racine de votre projet, puis écrivez vos tâches cmd à l'intérieur.

mysql -u dbUser -e "DROP DATABASE IF EXISTS testDatabase;"
mysql -u dbUser -e "CREATE DATABASE testDatabase;"

php index.php migration latest #

cd application\tests
phpunit

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X