如何從.bat文件調用查詢? (說我的查詢是:從系統中選擇版本)。可以.bat文件執行一個sql查詢並返回一個值嗎?
我的.bat文件可以保存此查詢返回的輸出嗎?我想在我的NSIS腳本中使用這個輸出。
如何從.bat文件調用查詢? (說我的查詢是:從系統中選擇版本)。可以.bat文件執行一個sql查詢並返回一個值嗎?
我的.bat文件可以保存此查詢返回的輸出嗎?我想在我的NSIS腳本中使用這個輸出。
對於Oracle:
How can I issue a single command from the command line through sql plus?
@echo select version from system; | sqlplus username/[email protected]
您可以管道輸出到一個文件並使用,或者把這個包在for
命令來分析你的批處理文件中的輸出。
編輯:這個答案是針對SQL Server,而不是Oracle。(問題發佈時並不明確)。
您可能想要檢查sqlcmd實用程序。
sqlcmd實用程序允許您在命令提示符下輸入Transact-SQL語句,系統過程和腳本文件。以下示例在sqlcmd啓動時執行查詢,然後立即退出。多分號分隔的查詢可以執行:
sqlcmd -d AdventureWorks -Q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%';"
要查詢的輸出保存到一個文件,你可以使用-o C:\< filename>
選項。
對於SQL Server,這工作完美 – Pia 2010-01-13 10:22:28
如果您有一個命令行SQL實用程序,最有可能它允許執行命令行操作。根據你的SQL版本,你可以檢查它。
這取決於您使用什麼工具執行查詢。例如,對於the mysql command line tool,你會怎麼做:
mysql -u<user> -p<password> -h<host> -Nrs -e"SELECT version() FROM system" > out.txt
這裏,去mysql -u<user> -p<password> -h<host>
是標準的選項來連接到服務器的作品。 -Nrs
是一組選項,將導致客戶端不輸出結果的所有ascii藝術。 -e"SELECT version() FROM system"
的位實際上指定了應該執行的命令。有關這些特定於mysql的選項的更多信息,請參閱http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html。在你想使用的客戶端工具中尋找類似的選項。
最後一位,> out.txt
是標準的操作系統級重定向。它會導致來自mysql程序的輸出存儲在文件out.txt
中,但也許您可以直接重定向到您的NSIS程序。
嘗試
sqlplus user/[email protected] @query.sql > result.txt
其中query.sql的包含數據庫查詢和的Result.txt將充滿查詢輸出。
根據查詢,輸出文件可能不如您期望的那樣(列標題等,因爲典型的sqlplus),所以您的query.sql應該包含一些SET命令來根據您的需要調整輸出。
另一種方法是使用Oracle SPOOL命令而不是將結果輸送到文件。
這是很好,但列的格式不好... – 2013-05-24 14:31:52
這就是我正在尋找..謝謝:) – Pia 2010-01-12 12:42:08
@ patrick..how我們可以管輸出到一個上面的文件? – Sunny 2013-12-14 18:25:07
@Sunny; '@echo從系統中選擇版本; | sqlplus用戶名/密碼@ database> file.ext'。 – 2014-01-02 11:47:19