如何通过PowerShell在仅装SQLcl的Windows主机上执行远程Oracle SQL脚本
SQLcl 非交互式执行远程Oracle脚本解决方案
你遇到的报错本质是connect命令本身不支持追加脚本路径参数,SQLcl完全兼容sqlplus的批量调用逻辑,以下是两种可行实现方案:
方案1:直接调用(最推荐,与原有sqlplus用法一致)
SQLcl的sql命令原生支持直接传入连接串+脚本参数,无需先进入/nolog交互模式,直接在PowerShell中执行以下命令即可:
sql id_maint/password@111.22.33.44:1521/sid @C:\sql_scripts\initial_script.sql
该执行逻辑和你之前用sqlplus的调用方式完全对齐,适合仅需执行单个脚本的场景。
方案2:管道传入多步指令(适合多操作场景)
如果你需要在连接后执行多步操作(比如先调整会话参数、再执行多个脚本),可以将所有需要在SQL>提示符下执行的指令通过PowerShell管道传给SQLcl:
# 所有SQLcl交互指令写在多行字符串内,最后加exit自动退出会话 @" connect id_maint/password@111.22.33.44:1521/sid -- 可在此处追加其他需要执行的SQL/命令,例如: -- set linesize 200 -- @C:\sql_scripts\pre_script.sql @C:\sql_scripts\initial_script.sql exit "@ | sql /nolog
错误原因说明
你之前在SQL>界面执行connect id_maint/password@xxx @脚本路径报错,是因为connect是SQLcl内部的会话管理命令,仅接收连接身份参数,不支持追加脚本执行参数,脚本路径是sql命令的顶层启动参数,需要放在PowerShell调用sql命令的参数位,而非内部connect命令的参数位。
内容的提问来源于stack exchange,提问作者newman
相关产品推荐
相关产品推荐

