oracle sqlplus在@命令路径中有空格的问题

Ste*_*hen 8 oracle whitespace sqlplus

我在Linux上运行Oracle 11g,我正在尝试运行一个脚本来创建我的数据库.这个脚本在Windows上运行正常,但是当我在Linux上测试它时,我收到以下错误:

SP2-0556: Invalid File Name
Run Code Online (Sandbox Code Playgroud)

问题可能是文件名的路径中有空格.我将把问题简化为我在文件中运行的众多命令之一,以简化操作.我试图运行的示例命令如下所示:

sqlplus [uname]/[pw] @'../database/My Schema/create_sequence.sql'
Run Code Online (Sandbox Code Playgroud)

create_sequence.sql文件有两个简单的创建序列命令,它们可以自行运行.我强烈怀疑这是由于空白,因为当我将目录名从My Schema更改为MySchema并相应地更改上面的sqlplus命令时,脚本运行正常.

就像我说的,这个脚本在带有空格的窗口中工作,但不适用于Linux.我怀疑空间可能不受支持,但我想知道是否有人知道有什么不同或者它有解决方法吗?

旁注:运行如下命令:

more ../database/My\ Schema/create_sequence.sql
Run Code Online (Sandbox Code Playgroud)

要么

more "../database/My Schema/create_sequence.sql" 
Run Code Online (Sandbox Code Playgroud)

如您所料,将文件的内容打印到控制台.所以,我认为这是sqlplus(和linux)具体的.

Mar*_*ddy 5

我连接到我的一个Linux盒子,很容易重现这个问题.似乎没有任何方法可以找到从命令行使用'@'选项执行文件,所以我认为你留下了以下选项来解决:

  1. My Schema目录重命名为不再有空格(以及更新引用它的所有其他脚本)
  2. 从它所在的目录执行该文件(我确认这有效,见下文)
  3. 通过stdin将文件发送到sqlplus(见下文)

您还应该向Oracle提供报告,因为可能会提供一个简单的修复程序.

示例命令:

来自目录

cd ../database/My\ Schema
sqlplus [uname]/[pw] @create_sequence.sql
Run Code Online (Sandbox Code Playgroud)

通过stdin

sqlplus [uname]/[pw] < ../database/My\ Schema/create_sequence.sql
Run Code Online (Sandbox Code Playgroud)