2015-11-04 89 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