2015-11-04 82 views
0

我想創建一個批處理文件來運行一個sql查詢(然後後臺處理結果)。創建批處理文件來運行sql

但是,目前沒有任何反應,我只是在cmd窗口中獲取有關sqlplus的使用信息。這裏是我的批處理代碼:

SQLPLUS login/[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<url>)(Port=<port>))(CONNECT_DATA=(SID=<sid>)))@C:\Users\Documents\SQL\test2.sql 

pause 

,這裏是我的test2.sql文件:

spool C:\Users\Documents\Testing.csv 

select * 
from test; 

spool off; 
exit; 

請幫助 - 我究竟做錯了什麼? (我對此很新,所以請用簡單的詞語回答/問/嘲笑,這樣我就能理解)

+0

應該說 - 我使用windows&oracle。 – ratherstrange

+0

您是否嘗試閱讀正確格式的SQLPlus命令行文檔? –

+0

我基本上讀過整個互聯網 - 所以這個問題。如果我在連接到數據庫之後直接將它放到命令窗口中,sql將起作用。我嘗試了各種各樣的東西,而這(根據其他問題的海報)應該可以工作 - 但事實並非如此。我想也許是因爲數據庫在線託管?如果這是顯而易見的事情,我做錯了,請讓我知道:) – ratherstrange

回答

0

這是顯而易見的,你做錯了。你需要和@與腳本文件名的連接字符串的結尾之間的空間:

SQLPLUS login/[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<url>)(Port=<port>))(CONNECT_DATA=(SID=<sid>))) @C:\Users\Documents\SQL\test2.sql 

<url>參考是奇數這裏;希望這實際上是主機名,完全合格的主機名(可以解析)或IP地址。

但是,我建議你使用TNS別名,以便縮短命令行,將所有信息放在tnsnames.ora文件中;或者,如果你知道服務名(這可能是一樣的SID)使用簡單的連接語法:

SQLPLUS -l -s login/[email protected]//<hostname>:<port>/<service_name> @C:\Users\Documents\SQL\test2.sql 

我也甩在了-s標誌,以抑制旗幟,-l標誌所以如果證書或連接字符串錯誤就停止。初始失敗後,您原來的ersion會嘗試使用腳本內容登錄,從而產生更令人困惑的輸出。

+0

謝謝 - 這工作!我以爲我可能在做一些愚蠢的事情.... – ratherstrange