来自命令行的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 $