如何在Windows下更改SQL Plus中的当前目录。
我正在尝试用几个“@ filename”命令编写一个脚本。
我知道可以用文件打开脚本 - >打开命令,它将更改当前目录,但我正在寻找一种自动无人值守的方法。
基于Plasmer的响应,我在Windows中设置了SQLPATH环境变量,并且得到了一些对我来说足够好的东西。我没有尝试使用HOST命令设置它(我怀疑它会起作用)。
Pourquoi Litytestdata的答案很好,但对我不起作用(目录相距太远)。当然盖伊回答说无法做到也是正确的。我将对这两个进行投票,并接受Plasmer的回答。
答案 0 :(得分:20)
这就是我的工作。
定义一个变量来帮助你:
define dir=C:\MySYSTEM\PTR190\Tests\Test1
@&dir\myTest1.sql
您不能在SQL * Plus中cd
(您可以使用host命令cd
,但由于它是子进程,因此该设置将不会在您的父进程中保留)。
答案 1 :(得分:10)
我认为您不能在SQL * Plus中更改目录。
您可以使用@@filename
而不是更改目录,而script1.sql
会读入另一个脚本,该脚本的位置相对于当前脚本运行的目录。例如,如果您有两个脚本
C:\Foo\Bar\script1.sql C:\Foo\Bar\Baz\script2.sql
然后script2.sql
如果包含
@@
运行
@@Baz\script2.sql
有关{{1}}的详细信息,请参阅this。
答案 2 :(得分:8)
您是否可以使用SQLPATH环境变量告诉sqlplus在哪里查找您尝试运行的脚本?我相信你也可以使用HOST在脚本中设置SQLPATH。
如果两个脚本具有相同的名称且两个目录都在SQLPATH中,则可能会出现问题。
答案 3 :(得分:3)
我认为你不能!
/home/export/user1 $ sqlplus /
> @script1.sql
> HOST CD /home/export/user2
> @script2.sql
script2.sql必须位于/home/export/user1
。
您可以使用完整路径,也可以退出脚本并从右侧目录再次启动sqlplus
。
#!/bin/bash
oraenv .
cd /home/export/user1
sqlplus / @script1.sql
cd /home/export/user2
sqlplus / @script2.sql
(类似的东西 - 从记忆中做到这一点!)
答案 4 :(得分:2)
您是否尝试为sql plus创建Windows快捷方式并设置工作目录?
答案 5 :(得分:2)
我认为SQLPATH环境变量是最佳方式 - 如果您有多个路径,请用分号(;)分隔它们。请记住,如果目录中有相同名称的脚本文件,则会执行第一个(按顺序输入路径),第二个将被忽略。
答案 6 :(得分:1)
多年以后我遇到了同样的问题。我的解决方案是创建一个临时批处理文件和另一个sqlplus实例:
在第一个SQL脚本中:
:
set echo off
spool sqlsub_tmp.bat
prompt cd /D D:\some\dir
prompt sqlplus user/passwd@tnsname @second_script.sql
spool off
host sqlsub_tmp.bat
host del sqlsub_tmp.bat
:
请注意" second_script.sql"需要退出"退出"如果你想回到第一个,那么最后的陈述......
答案 7 :(得分:1)
使用Oracle的新SQLcl,现在有一个cd命令,随附pwd。 可以在此处下载SQLcl:http://www.oracle.com/technetwork/developer-tools/sqlcl/overview/index.html
这是一个简单的例子:
SQL>pwd
/Users/klrice/
NOT_SAFE>!ls *.sql
db_awr.sql emp.sql img.sql jeff.sql orclcode.sql test.sql
db_info.sql fn.sql iot.sql login.sql rmoug.sql
SQL>cd sql
SQL>!ls *.sql
003.sql demo_worksheet_name.sql poll_so_stats.sql
1.sql dual.sql print_updates.sql
SQL>
答案 8 :(得分:-2)
http://www.dba-oracle.com/t_display_current_directory_sqlplus.htm
简而言之,请参阅当前目录:
!pwd
改变它
!cd /path/you/want