`
qnzhl
  • 浏览: 29722 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shell sqlplus 函数的编写

阅读更多

sqlplus执行文件:sqlplus user/pass@cibsdb < sqlfile.sql   ##执行sqlfile.sql脚本


#!/bin/bash
NAME="$1"
sqlplus -S u_test/iamwangnc <<EOF
select * from tab where tname = upper('$NAME');
exit
EOF


为了安全要求每次执行shell都手工输入密码

$ vi test5.sh

#!/bin/bash
echo -n "Enter password for u_test:"
read PASSWD
sqlplus -S /nolog <<EOF
conn u_test/$PASSWD
select * from tab;
exit
EOF

$ chmod +x test5.sh
$ ./test5.sh

为了安全从文件读取密码

对密码文件设置权限, 只有用户自己才能读写.

$ echo 'iamwangnc' > u_test.txt
$ chmod g-rwx,o-rwx u_test.txt
$ vi test6.sh

#!/bin/bash
PASSWD=`cat u_test.txt`
sqlplus -S /nolog <<EOF
conn u_test/$PASSWD
select * from tab;
exit
EOF

$ chmod +x test6.sh
$ ./test6.sh


sqlplus的结果存储在文件中

#!/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

或者
spoolSql(){
sql=$1;
filepath=$2;
sqlplus -S "test/unimas"<<EOF
set heading off
set feedback off
set pagesize 0
set verify off
set echo off
spool filepath
$sql;
spool off
exit;
EOF
}
spoolSql "select * from sys_info" "sys_info.txt"


与下列代码效果是相同的:
#!/bin/sh
sqlplus -S "test/unimas"<<EOF > spool_file
set heading off
set feedback off
set pagesize 0
set verify off
set echo off
SELECT * from teacher;
exit;
EOF
--End--



oracle demo1:
sqlfun(){
sql=$1;
info=`sqlplus -S /nolog <<!
set linesize 8000
set heading off
set feedback off
conn ${username}/${password}@${dbname}
set pagesize 0
set verify off
set echo off
${sql};
exit
!`
echo $info
}

使用:
cou=`sqlfun "select count(1) from sys_info"`


oracle demo2:
spoolfun(){
sql=$1;
filepath=$2;
sqlplus -S /nolog <<!
set heading off
set echo off
set feedback off
set page 0
set linesize 32766
set trimout on
set frimspool on
set newpage none
set sqlblanklines off
set trims on
set timing off
set serveroutput off
set verify off
conn ${username}/${password}@${dbname}
${sql};
exit
!
}

使用:
spoolfun "select * from sys_info" >> "sys_info.txt"
while read sys_no sys_name
do
echo "$sys_no $sys_name"
done < sys_info.txt



informix demo3:
ifxSqlfun(){
sql=$1;
presql='SET LOCK MODE TO WAIT 10;output to pipe "cat" without headings' ;
sql=$presql$sql;
echo "$sql"|dbaccess $ifxdbname 2 >/dev/null;
}

使用方法:
sys_no_list=`ifxSqlfun "select sys_no from systeminfo"`
sys_no_str=`echo ${sys_no_list} |sed 's/ /,/g'`




informix demo4:
ifxISqlfun(){
sql=$1;
echo "$sql"|dbaccess $ifxdbname 2 >/dev/null;
}

使用:
ifxSqlfun "update sys_info set sys_name='zgs' where sys_no='00'"
sys_name=`ifxSqlfun "select sys_name from sys_info"
分享到:
评论

相关推荐

    Unix Oracle Shell Scripting

    本文旨在为读者提供一个在Oracle环境中进行Unix Shell脚本编写的起点。为了实现这一目标,本文被分为两个主要部分:“构建基础”和“实践示例”。其中,“构建基础”部分将介绍一些必需的基本概念;而“实践示例”...

    instantclient-sqlplus-linux.x64-12.1.0.2.0.zip

    它主要包括了OCI(Oracle Call Interface)、OCCI(Oracle Call Interface for C++)、ODBC(Open Database Connectivity)和JDBC(Java Database Connectivity)等接口,这些接口使得开发者能够编写各种语言的应用...

    shell脚本可配置备份oracle数据库.rar

    - **基础语法**:Shell脚本使用Bash或其他Shell语言编写,包括变量、条件语句、循环、函数等元素。 - **调用RMAN**:在Shell脚本中,可以通过`sqlplus`或`rman`命令来执行RMAN操作,如启动数据库实例、执行备份...

    Oracle基础:程序中调用sqlplus的方式

    只要正确编写和传递Here Document,就能够灵活地控制sqlplus执行各种复杂的数据库操作。记住,为了确保语句的正确执行,需要正确转义SQL语句中的特殊字符,并确保输入的SQL语法正确无误。通过熟练掌握这一技巧,可以...

    shell脚本可配置备份oracle数据库异常sendEmail25发邮件.rar

    开发者可以编写脚本来执行特定的SQL命令,例如使用`sqlplus`工具连接到Oracle数据库,运行`EXPDP`或`IMPDP`命令进行数据泵导出和导入操作。此外,脚本还可以包含时间控制逻辑,如cron定时器,以便在指定时间自动执行...

    针对Oracle DBA讲座的如何编写脚本

    通过编写存储过程、函数、触发器等,可以实现数据库操作的封装和逻辑控制。 4. **Shell脚本**:在Unix/Linux环境中,DBA通常会用Bash或其他Shell脚本来组合多个命令或SQL*Plus脚本。这可以通过调用SQL*Plus并传递...

    execsqlscript

    标签中的"plsql"指的是PL/SQL,Oracle数据库的编程语言,它可以用来编写存储过程、函数、触发器等。在shell脚本中执行的SQL脚本可能包含了PL/SQL代码。 总之,`execsqlscript`这个话题涉及到了shell脚本编程、...

    pl sql安装程序压缩包

    - 通过批处理文件或shell脚本,可以自动化执行一系列SQLPLUS命令,这对于数据库维护和数据迁移非常有用。 总之,SQLPLUS是Oracle数据库管理员和开发人员日常工作中不可或缺的工具,熟练掌握其使用能够极大地提升...

    Oracle学习文档

    - 可以使用记事本来编写SQL语句,并保存为`.sql`文件,如`a.sql`。然后在`sqlplus`中执行这个文件: ```shell @a.sql ``` - 如果文件位于其他路径下,比如`D:\demo.txt`,可以直接执行这个文件: ```shell @D...

    oracle ppt(英文)

    7. **PL/SQL**:PL/SQL是Oracle特有的编程语言,结合了SQL和过程编程,常用于编写存储过程、函数和触发器。这些数据库对象可以直接在数据库中执行,提高了应用程序的性能和安全性。 8. **备份恢复**:Oracle提供...

    Linux下定时自动执行Oracle_SQL

    2. **创建Shell脚本**:接下来,创建一个Shell脚本来调用Oracle客户端工具(如sqlplus)并执行SQL脚本。Shell脚本(ss.sh)中包含了执行日期的记录、输出文件路径的设定以及调用SQL脚本的具体命令。 3. **设置...

    Oracle DBA的UNIX 袖珍参考手册

    2. **Shell脚本编程**:编写shell脚本是DBA日常工作中不可或缺的一部分,用于自动化重复性任务。手册会介绍Bash Shell的语法,如变量、条件语句、循环、函数等,以及如何使用`sed`, `awk`, `grep`等文本处理工具。 ...

    不同数据库之间的数据导入导出

    1. **导出数据至文本文件**:通过编写shell脚本来执行SQL查询,将db1中的tab1表数据导出为逗号分隔值(CSV)格式的文本文件。此脚本需包含处理SQL输出格式、去除不必要的行和字符,以及数据格式转换等步骤。 - ...

    ORACLE.zip_Oracle数据库_Windows_Unix_

    此外,还要掌握PL/SQL编程语言,用于编写存储过程、触发器和函数,以实现复杂的业务逻辑。 安全方面,Oracle数据库支持用户权限管理、角色分配、审计功能以及加密技术。DBA需要定期进行权限审查,确保只有授权用户...

    ORACLE之FAQ -- 性能调整

    可以通过编写 shell 脚本来实现这一点。例如,下面是一个简单的脚本,用于根据进程 ID 获取当前用户的详细信息: ```bash #!/bin/sh sqlplus /nolog CONNECT /AS SYSDBA COL MACHINE FORMAT A30 COL PROGRAM ...

    2010年oracle命令176页完整版型

    - 可以编写shell脚本或其他类型的脚本来自动执行数据库操作。 #### 七、同义词操作 **1. 创建同义词:** - **创建同义词:** ```sql CREATE SYNONYM synonym_name FOR object_owner.object_name; ``` **2. ...

Global site tag (gtag.js) - Google Analytics