2010-01-12 163 views

回答

8

對於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命令來分析你的批處理文件中的輸出。

+0

這就是我正在尋找..謝謝:) – Pia 2010-01-12 12:42:08

+0

@ patrick..how我們可以管輸出到一個上面的文件? – Sunny 2013-12-14 18:25:07

+0

@Sunny; '@echo從系統中選擇版本; | sqlplus用戶名/密碼@ database> file.ext'。 – 2014-01-02 11:47:19

5

編輯:這個答案是針對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>選項。

+2

對於SQL Server,這工作完美 – Pia 2010-01-13 10:22:28

0

如果您有一個命令行SQL實用程序,最有可能它允許執行命令行操作。根據你的SQL版本,你可以檢查它。

3

這取決於您使用什麼工具執行查詢。例如,對於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程序。

2

嘗試

sqlplus user/[email protected] @query.sql > result.txt 

其中query.sql的包含數據庫查詢和的Result.txt將充滿查詢輸出。

根據查詢,輸出文件可能不如您期望的那樣(列標題等,因爲典型的sqlplus),所以您的query.sql應該包含一些SET命令來根據您的需要調整輸出。

另一種方法是使用Oracle SPOOL命令而不是將結果輸送到文件。

+0

這是很好,但列的格式不好... – 2013-05-24 14:31:52

相關問題