web-dev-qa-db-fra.com

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

Je cherche un moyen de réduire la quantité de taper que je fais pour vérifier les entrées MySQL et d'autres choses. Par exemple, je voulais 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 après l'utilisateur initial MySQL -U -U -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 son préfixe (?) Au début des commandes (MySQL>). Je ne connais pas très bien la terminologie me pardonnant si cela semble déroutant. J'aimerais utiliser le même type de concept pour d'autres choses aussi.

L'aide est très appréciée, merci.

7
SikhWarrior

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

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

Fondamentalement, vous utilisez un fichier contenant toutes vos commandes en tant que paramètre d'entrée - MySQL exécutera le contenu de ce fichier.


Edit: Si vous souhaitez construire votre requête à la volée, vous pouvez toujours avoir votre fichier de commandes, écrivez une requête à un fichier temporaire que vous pouvez alors charger pour l'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
7
Alec Sanger

Run mysql avec - Option :

mysql -h Host -u user -p -e 'SHOW TABLES FROM test'
2
arcadius

Vous pouvez écrire quelque chose comme ça

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

Ou pour exécuter des tâches répétitives Créer un fichier RunTasks.bat, enregistrer sous 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
0
Gpak