題 創建.bat文件以執行mysql和其他命令


我正在尋找一種方法來減少我檢查mysql條目和其他東西的輸入量。 例如,我想創建一個將執行以下命令的.bat文件。

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

問題是在最初的mysql -u user -p之後寫下來的其餘命令沒有被執行。是否可以在調用mysql或其他程序之後繼續運行命令,這些命令似乎將其前綴(?)添加到命令的開頭(mysql>)。我對這個術語不是很熟悉所以請原諒我,如果這聽起來很混亂。我也想對其他事情使用相同的概念。

非常感謝幫助, 謝謝。


6
2017-11-21 01:22


起源


他們'mysql>'在開頭意味著你不再使用'cmd',而是使用mysql。這是您的問題的根源,因為您的批處理文件假定您正在使用cmd。


答案:


您可以在批處理模式下運行mysql,如中所述 文件

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

基本上你使用包含所有命令的文件作為輸入參數 - mysql將執行該文件的內容。


編輯:如果要動態構建查詢,可以隨時讓批處理文件向臨時文件寫出查詢,然後可以加載以供mysql執行。例如:

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

6
2017-11-21 01:26



我似乎記得在尋找解決方案時,但這是唯一的方法嗎?我想為多個應用程序實現某種解決方案。
我不相信您可以指定要執行的單個命令,因為正如hyleaus所提到的,當您嘗試在未指定輸入的情況下運行mysql時,您不再在cmd中運行。我已經用一個解決方案更新了我的答案,這個解決方案仍然允許你動態構建,但是...
這可行,但它幾乎與解決方案用戶Aacini在下面發布的結果相同。


也許你可能想嘗試從這個論壇中的其他問題中出現的一個小技巧(不幸的是被刪除)。

您可以直接在命令下面的行中插入命令的輸入,然後執行文件NOT作為批處理文件,但作為輸入por cmd.exe(這類似於 這裡的文件 在Unix中)。例如:

script.TXT:

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

以這種方式執行以前的“腳本”:

cmd <script.TXT

如果您執行此測試,請報告結果...

安東尼奧


2
2017-11-21 05:49



這似乎有效,儘管有限。它將運行腳本很好,並顯示表結果,但我無法繼續編寫SQL命令。一旦完成txt文件命令,它將返回cmd。然而,它在許多方面仍然有用。
當然,這是預期的結果:自動執行SQL而無需用戶的手動干預。請注意 EXIT命令我在示例中輸入的是SQL,否則SQL可能會在輸入文件結束後掛起等待輸入... - Aacini


mysql 同 -e選項

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

2
2017-11-30 02:01





你可以寫這樣的東西

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

或者要運行重複任務,請創建一個runtasks.bat文件,保存在項目的根目錄下,然後在內部編寫cmd任務

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

-1
2018-01-17 13:58