创建批处理文件 运行 sql

Create batch file to run sql

我正在尝试为 运行 创建一个批处理文件 sql 查询(然后假脱机处理结果)。

然而,目前什么也没有发生,我只是在 cmd window 中获得了关于 sqlplus 的使用信息。这是我的批处理代码:

SQLPLUS login/password@(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;

请帮忙 - 我做错了什么? (我对此很陌生,所以请用简单的术语 answer/ask/ridicule 以便我能理解)

很明显你做错了。您需要在连接字符串末尾和 @ 之间添加一个 space,脚本文件名:

SQLPLUS login/password@(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/password@//<hostname>:<port>/<service_name> @C:\Users\Documents\SQL\test2.sql

我还加入了 -s 标志以抑制横幅,以及 -l 标志以便在凭据或连接字符串错误时停止。您的原始版本会在初始失败后尝试使用脚本内容登录,从而产生更加混乱的输出。