SQLPlus 批处理文件 - 如何返回到命令提示符?

Posted

技术标签:

【中文标题】SQLPlus 批处理文件 - 如何返回到命令提示符?【英文标题】:SQLPlus batch file - how to return to command prompt? 【发布时间】:2014-05-22 13:50:00 【问题描述】:

我正在尝试将 Oracle 表导出到文本文件。我有这个工作,但我还需要在导出结束后将文本文件从一个位置复制到另一个位置。在 SELECT 语句之后,如何从 SQL> 提示返回到 C:\ 提示?

我有一个批处理文件 select.bat,它是这样做的:

echo @d:\users\myusername\desktop\sqlscript.sql | sqlplus mylogin/mypassword

而 sqlscript.sql 看起来像这样:

set colsep ,
set pagesize 0
set trimspool on
set headsep off
set linesize 9999
spool d:\users\myusername\desktop\tablename.csv
select * from tablename;
spool off

我运行批处理文件,一切正常。如何添加如下行:

move d:\users\myusername\desktop\tablename.csv "\\server\share\myfolder\" 

在 .bat 文件中还是在 .sql 文件中?

谢谢!

更新:

我把批处理文件改成这样:

start cmd.exe /k "sqlplus mylogin/mypassword @d:\users\myusername\desktop\sqlscript.sql & move /y d:\users\jjb4211\desktop\tablename.csv \\servername\sharename\myfolder & exit"

在 SQl 文件中,我在spool off 之后添加了exit

所以现在我可以运行 .bat 文件,它会打开一个新的命令提示符,连接到 Oracle,将表假脱机到一个文本文件,将文本文件移动到网络,然后退出。

【问题讨论】:

我认为您需要将exit 添加到 SQL 脚本中。然后你的批处理文件应该在调用 SQL*Plus 后继续 @a_horse_with_no_name - 我尝试在spool off 行之后添加exit,但它关闭了命令提示符窗口(而不是仅仅退出 sqlplus 并返回到 c:)。 好吧,如果您双击批处理文件,那么这是预期的行为:一旦批处理文件完成,命令行窗口将关闭,除非您通过在批处理文件中手动键入其名称来启动批处理文件命令行。 这是有道理的。我将该批处理文件更改为start cmd.exe /K "echo @d:\users\myusername\desktop\sqlscript.sql | sqlplus mylogin/mypassword",并在SQL 脚本中将exit 添加到末尾。这将运行 SQL 脚本并在之后保持命令提示符窗口打开。现在我只需要在exit 行之后添加我的Move 语句,我想我会设置好的。谢谢!如果您想发布您的 cmets 作为答案,我会继续接受它。 move 语句需要进入 .bat 文件(在调用 sqlplus 之后)而不是进入 SQL 脚本 【参考方案1】:

'/' 退出后将终止脚本并返回批处理文件。将exit和/放在sql脚本的末尾:

设置 colsep ,;

设置页面大小 0;

设置修剪阀;

关闭头戴式耳机;

设置线条大小 9999;

假脱机 d:\tablename.csv;

从 robmat.rdok 中选择 *;

关闭;

退出;

/

现在它适用于您将移动命令放在第二行的初始批处理文件。

【讨论】:

以上是关于SQLPlus 批处理文件 - 如何返回到命令提示符?的主要内容,如果未能解决你的问题,请参考以下文章

oracle安装后完善2-2 sqlplus配置变量 命令提示符如何显示为用户名

在命令提示符界面如何返回到上一个文件夹?

如何运用命令提示符登录ORACLE 的sys账户

DOS/sqlplus“句柄无效”错误?

进入oracle后,sqlplus如何登陆?

使用 sqlplus 命令在批处理文件中执行 sql 脚本