shell脚本如何登陆oracle,如何在shell脚本中嵌入Oracle数据库操作

借助Oracle数据库交互客户端工具sqlplus

sqlplus连接数据库的常用四种方式详见http://www.2cto.com/database/201307/226125.html

本文中均采用万金油的远程连接oracle命令方式作为例子。

1. 使用sqlplus进入cmd模式后批量执行sql命令

例如,想在脚本中获取某张表的记录数

recCount=`sqlplus -S ${TRA_DB_USER}/${TRA_DB_PWD}@${TRA_DB_HOST}:${TRA_DB_PORT}/${TRA_DB_SID}

set feedback off

set verify off

set heading off

set echo off

select count(*) from table_name;

exit

EOF`

记得要exit

2. 使用sqlplus进入cmd模式后批量执行sql脚本文件

start命令可以读取文件中的内容到缓冲区中,然后再SQL*PLUS中运行这些内容

例如,想要在脚本中通过两个sql文件向两张表中导入数据

sqlplus ${PAR_DB_USER}/${PAR_DB_PWD}@${PAR_DB_HOST}:${PAR_DB_PORT}/${PAR_DB_SID}

start insert_table2.sql;

exit;

EOF

记得要exit

3. 使用sqlplus直接单次执行一个sql脚本文件

sqlplus ${PAR_DB_USER}/${PAR_DB_PWD}@${PAR_DB_HOST}:${PAR_DB_PORT}/${PAR_DB_SID} @insert_table1.sql

sql脚本文件中要记得exit

4. 用数据泵(Data Dump)工具导出导入数据(格式跟3很像)

导出: exp ${PAR_DB_USER}/${PAR_DB_PWD}@${PAR_DB_HOST}:${PAR_DB_PORT}/${PAR_DB_SID} file=target_file.dmp tables=table_name_you_want

导入: imp ${PAR_DB_USER}/${PAR_DB_PWD}@${PAR_DB_HOST}:${PAR_DB_PORT}/${PAR_DB_SID} file=target_file.dmp full=y ignore=y

值得注意的是,如果shell脚本中有使用here-document(块变量,特殊的重定向)时,如果出现以下报错

warning: here-document at line 17 delimited by end-of-file (wanted `EOF')

line 30: syntax error: unexpected end of file

是因为

PS:如果密码中包含!等特殊字符,在前面加\(反斜杠)即可

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值