当前位置:数据库 > SQLServer >>

Linux安装sqlplus及shell查询数据库

Linux安装sqlplus及shell查询数据库
 
下载rpm文件,安装orcacle sqlplus 
Java代码  
rpm –ivh oracle-instantclient-basic-10.2.0.4-1.i386.rpm  
rpm –ivh oracle-instantclient-sqlplus-10.2.0.4-1.i386.rpm  
 
安装完成后需要设置环境变量 
Java代码  
LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.1/client/lib:${LD_LIBRARY_PATH}  
export LD_LIBRARY_PATH  
SQLPATH=/usr/lib/oracle/10.2.0.1/client/lib:${SQLPATH}  
export SQLPATH  
 
利用shell脚本查询数据库示例: 
Java代码  
#!/bin/bash  
  
name=$1  
passwd=$2  
host=$3  
port=$4  
sid=$5  
VALUE=`sqlplus -S $name/$passwd@$host:$port/$sid << !  
set heading off  
set feedback off  
set pagesize 0  
set verify off  
set echo off  
select id from table_name;  
exit  
!`  
#cataloguuid  
echo $VALUE  
if [ -n "$VALUE" ]; then  
        echo "The rows is $VALUE"  
        exit 0  
else  
        echo "There is no row"  
fi  
 
如果想要将查询结果重定向到外部文件查询语句为: 
Java代码  
sqlplus -S $name/$passwd@$host:$port/$sid << ! > queryResult.out  
set heading off  
set feedback off  
set pagesize 0  
set verify off  
set echo off  
select id from table_name;  
exit  
!`  
 
[oracle@hb shell_test]$ cat echo_time 
#!/bin/sh 
 
一.最简单的调用sqlplus 
sqlplus -S "sys/unimas as sysdba" << ! 
select to_char(sysdate,'yyyy-mm-dd') today from dual; 
exit; 
 
[oracle@hb shell_test]$ ./echo_time 
 
TODAY 
---------- 
2011-03-21 
 
-S 是silent mode,不输出类似“SQL>”,连接数据库,关闭数据库之类的信息。 
 
eof可以是任何字符串 比如"laldf"那么当你输入单独一行laldf时"shell认为输入结束,但是必须表示块开始必须使用<<; 
开始和结束要匹配这个符号“<<”后面的内容 
举例子: 
Java代码  
[oracle@hb shell_test]$ sqlplus -s "sys/unimas as sysdba" << abc  
> select to_char(sysdate,'yyyy-mm-dd') today from dual;  
> exit;  
> abc  
  
TODAY  
----------  
2011-03-21  
 
 
二.sqlplus的结果传递给shell的方法一 
Java代码  
[oracle@hb shell_test]$ cat test2.sh   
#!/bin/bash  
VALUE=`sqlplus -S "test/unimas" << !  
set heading off  
set feedback off  
set pagesize 0  
set verify off  
set echo off  
select to_char(sysdate,'yyyy-mm-dd') today from dual;  
exit  
!`  
echo $VALUE  
if [ -n "$VALUE" ]; then  
    echo "The rows is $VALUE"  
    exit 0  
else  
    echo "There is no row"  
fi  
 
三.sqlplus的结果传递给shell的方法二 
Java代码  
[oracle@hb shell_test]$ cat test1.sh   
#!/bin/bash  
sqlplus -S "test/unimas" << !  
set heading off  
set feedback off  
set pagesize 0  
set verify off  
set echo off  
col coun new_value v_coun  
select count(*) coun from lesson;  
exit v_coun  
!  
VALUE="$?"  
echo "show row:$VALUE"  
  
col coun new_value v_coun v_coun为number类型。因为exit 只能返回数值类型。  
 
 
四.把shell参数传递给sqlplus 
Java代码  
#!/bin/bash  
t_id="$1"  
sqlplus -S "test/unimas" << !  
set heading off  
set feedback off  
set pagesize 0  
set verify off  
set echo off  
select teachername from teacher where id=$t_id;  
exit  
!  
 
 
五.sqlplus的结果存储在文件中 
Java代码  
#!/bin/sh  
sqlplus -S "test/unimas"<<EOF  
set heading off  
set feedback off  
set pagesize 0  
set verify off  
set echo off  
spool spool_file  
SELECT * from teacher;  
spool off  
exit;  
EOF  
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,