运行 Oracle SQL 脚本并通过命令提示符退出 sqlplus.exe

Jos*_*shL 132 oracle command-line-interface sqlplus

我想通过 Windows 命令提示符通过 SQL Plus 运行 Oracle 脚本。该脚本不包含“退出”命令,但我仍然希望 SQL Plus 退出,在脚本完成时将控制权返回到命令提示符。我的目标是在修改脚本的情况下做到这一点。这可能吗?

Dav*_*sta 161

另一种方法是在批处理文件中使用此命令:

echo exit | sqlplus user/pass@connect @scriptname
Run Code Online (Sandbox Code Playgroud)

  • sqlplus 命令运行脚本然后尝试从标准输入读取更多命令。使用此管道,从标准输入读取的内容将从 echo 命令读取字符串“exit”,从而导致 sqlplus 退出。 (6认同)
  • 请注意,您通过 unix (ps -ef) 上的进程列表公开了您的用户名密码,但我几乎可以肯定它在 Windows 上的工作方式相同 (4认同)
  • http://stackoverflow.com/questions/1639704/sqlplus-statement-from-command-line 和 http://dba.stackexchange.com/a/65064/16892 描述了一些不必在命令行上使用密码的方法... (3认同)

use*_*847 17

我发现这是最好的解决方案,它可以在终端或脚本中使用:

echo @scriptname | sqlplus username/password@connect
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,我发现它比最佳答案更优雅,因为它避免了“退出”。 (7认同)

小智 14

现在意识到您的问题可能与 sql 文件本身有关,意识到需要告诉 sqlplus 退出。我这样做的方法是:

从双中选择 *;

退出;
/

(斜线很重要。它告诉 sqlplus 执行它上面的 statemet。)

  • 斜线表示执行 SQL 缓冲区中的内容。它不执行多条语句,也不需要执行诸如“quit”之类的 SQLPlus 控制命令。如果在交互式 SQLPlus 提示符下键入“quit”<Enter>,它将立即退出。 (2认同)

小智 14

隐藏用户信息并退出的最佳方式是:

exit | sqlplus -S user/pwd@server @script.sql
Run Code Online (Sandbox Code Playgroud)

exit提供给 sqlplus 的输出,迫使它退出。-S抑制脚本中除 sql 查询之外的所有服务器输出。

  • 如果使用ssh是做quit | 而不是退出| 以便在稍后编辑文件以退出或退出时它不会关闭您的 ssh 会话。如果也找不到文件,这也有效。 (2认同)

Eth*_*ost 9

您也可以在 shell 脚本中执行此操作。

sqlplus /nolog <<EOF
connect user/pass
@run_some_file.sql
select * from dual;
EOF
Run Code Online (Sandbox Code Playgroud)

您可能需要转义“;” 用\。