Criando um arquivo .bat para executar o mysql e outros comandos

6

Estou procurando uma maneira de reduzir a quantidade de digitação que faço para verificar as entradas do mysql e outras coisas. Por exemplo, eu queria criar um arquivo .bat que executaria os seguintes comandos.

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

O problema é depois que o usuário mysql -u inicial -p o resto dos comandos escritos não são executados. É possível continuar executando comandos depois de chamar algo como o mysql ou outros programas, que parecem adicionar seu prefixo (?) Ao início dos comandos (mysql >). Eu não estou muito familiarizado com a terminologia, então me perdoe se parecer confuso. Eu gostaria de usar o mesmo tipo de conceito para outras coisas também.

A ajuda é muito apreciada, Obrigado.

    
por SikhWarrior 21.11.2012 / 02:22

4 respostas

6

Você pode executar o mysql no modo batch, como indicado na documentação .

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

Basicamente você usa um arquivo contendo todos os seus comandos como um parâmetro de entrada - o mysql irá executar o conteúdo desse arquivo.

Edit: Se você quiser construir sua consulta em tempo real, você sempre pode fazer com que seu arquivo batch escreva uma consulta para um arquivo temporário que você possa carregar para execução pelo mysql. Por exemplo:

echo show tables from test > C:\path\to\file.sql
mysql -h host -u user -p < C:\path\to\file.sql
    
por 21.11.2012 / 02:26
2

Talvez você queira tentar um pequeno truque que surgiu de outra questão neste fórum (que foi excluído infelizmente).

Você pode inserir a entrada para um comando diretamente nas linhas abaixo do comando e, em seguida, executar o arquivo NOT como arquivo Batch, mas como entrada por cmd.exe (isso é semelhante a um aqui documento no Unix). Por exemplo:

script.TXT:

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

Execute o "script" anterior desta maneira:

cmd < script.TXT

Se você realizar este teste, informe o resultado ...

Antonio

    
por 21.11.2012 / 06:49
2

Execute mysql com opção -e :

mysql -h host -u user -p -e 'SHOW TABLES FROM test'
    
por 30.11.2013 / 03:01
-1

Você poderia escrever algo assim

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

Ou para executar tarefas repetidas, crie um arquivo runtasks.bat, salve sob a raiz do seu projeto e, em seguida, escreva suas tarefas cmd dentro

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
    
por 17.01.2017 / 14:58