创建批处理文件 运行 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 标志以便在凭据或连接字符串错误时停止。您的原始版本会在初始失败后尝试使用脚本内容登录,从而产生更加混乱的输出。
我正在尝试为 运行 创建一个批处理文件 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 标志以便在凭据或连接字符串错误时停止。您的原始版本会在初始失败后尝试使用脚本内容登录,从而产生更加混乱的输出。