来自命令行的sqlplus语句

有没有可能做这样的事情?

$ sqlplus -s user/pass "select 1 from dual"或者
$ echo "select 1 from dual" | sqlplus -s user/pass

我知道我可以把select 1 from dual在一个文件,并做到这一点:
$ sqlplus -s user/pass @myFile.sql

但是我想知道是否真的需要创build一个文件来满足sqlplus

只要注意在Unix / Linux上,如果你直接把它放在命令行上,任何可以运行“ps -ef”命令的用户都可以看到你的用户名/密码。 可能是一个很大的安全问题(或变成一个很大的安全问题)。

我通常build议创build一个文件或使用here文件,这样你就可以在Unix / Linux中使用“ps -ef”命令保护用户名/密码不被查看。 如果用户名/密码包含在脚本文件或sql文件中,则可以使用适当的用户/组读取权限进行保护。 然后你可以在shell脚本中像这样保持用户/文件的内部:

 sqlplus -s /nolog <<EOF connect user/pass select blah; quit EOF 

我能够执行确切的查询,只要确保在我的select语句的末尾有一个分号。 (输出是实际的,连接参数被删除。)

回声“从双select1”; | sqlplus -s用户名/密码@主机:1521 /服务

  1 ---------- 1 

不是那么重要,但是sqlplus在Mac OS X Snow Leopard上运行,服务器是Oracle 11g。

我的版本

 $ sqlplus -s username/password@host:port/service <<< "select 1 from dual;" 1 ---------- 1 

编辑:

对于多行你可以使用这个

 $ echo -e "select 1 from dual; \n select 2 from dual;" | sqlplus -s username/password@host:port/service 1 ---------- 1 2 ---------- 2 

我认为这是* nix?

使用“这里的文件”:

 sqlplus -s user/pass <<+EOF select 1 from dual; +EOF 

编辑:我应该尝试你的第二个例子。 它也可以工作(即使在Windows中也没有问题):

 $ echo 'select 1 from dual;'|sqlplus -s user/pw 1 ---------- 1 $