达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本

达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本,第1张

通过shell脚本调用sql脚本:

1、shell脚本调用sql脚本

#首先编辑sql文件

oracle@SZDB:~> more deptsql

connect scott/tiger

spool /tmp/deptlst

set linesize 100 pagesize 80

select from dept;

spool off;

exit;

#编辑shell脚本文件,在shell脚本内调用sql脚本

oracle@SZDB:~> more get_deptsh

#!/bin/bash

# set environment variable

if [ -f ~/bashrc ]; then

~/bashrc

fi

export ORACLE_SID=CNMMBO

sqlplus -S /nolog @/users/oracle/deptsql #注意此处执行sql脚本的方法 -S 表示以静默方式执行

exit

#授予脚本执行权限

oracle@SZDB:~> chmod 775 get_deptsh

-->执行shell脚本

oracle@SZDB:~> /get_deptsh

DEPTNO DNAME LOC

---------- -------------- -------------

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

2、shell脚本调用rman脚本

#首先编辑RMAN脚本

oracle@SZDB:~> more rmanrcv

RUN {

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

CONFIGURE BACKUP OPTIMIZATION ON;

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/users/oracle/bak/%d_%F';

ALLOCATE CHANNEL CH1 TYPE DISK MAXPIECESIZE=4G;

ALLOCATE CHANNEL CH2 TYPE DISK MAXPIECESIZE=4G;

SET LIMIT CHANNEL CH1 READRATE=10240;

SET LIMIT CHANNEL CH1 KBYTES=4096000;

SET LIMIT CHANNEL CH2 READRATE=10240;

SET LIMIT CHANNEL CH2 KBYTES=4096000;

CROSSCHECK ARCHIVELOG ALL;

DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;

BACKUP

DATABASE FORMAT '/users/oracle/bak/%d_FULL__%U';

SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT';

BACKUP ARCHIVELOG ALL FORMAT '/users/oracle/bak/%d_LF_%U' DELETE INPUT;

DELETE NOPROMPT OBSOLETE;

RELEASE CHANNEL CH1;

RELEASE CHANNEL CH2;

}

#编辑shell脚本文件,在shell脚本内调用rman脚本

oracle@SZDB:~> more rman_baksh

#!/bin/bash

# set environment variable

if [ -f ~/bashrc ]; then

~/bashrc

fi

export ORACLE_SID=CNMMBO

$ORACLE_HOME/bin/rman target / cmdfile=/users/oracle/rmanrcv log=/users/oracle/bak/rmanlog

exit

#授予脚本执行权限

oracle@SZDB:~> chmod 775 rman_baksh

#执行shell脚本

这个问题你可能通过查询oracle的系统表,例如all_all_tables,用这些对象的列表生成一批数据库删除对象的语句,然后将这些语句存到文件,用sqlplus的文件参数执行这一批语句。

1、用sqlplus执行

spool empxls

select from emp;

spool off即可

2、实例

#!/bin/sh

#!/bin/bash

today=`date +%Y%m%d`

file=emp_${today}xls

sqlplus 'scott/tigger' << EOF

set linesize 200

set head off

set term off verify off feedback off pagesize 999

set markup html on entmap ON spool on preformat off

alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';

spool $file

select from emp;

spool off

quit;

EOF

#处理一下文件头

sed -i '/select/d' $file

sed -i '/spool/d' $file

empno=100不存在的,改成有的数据了。

#!/bin/bash

result=$(sqlplus -s 'scott/tiger@dbname'<<EOF

spool testtxt

set pages 0

set feed off

set heading off;

set feedback off;

set verify off;

set linesize 1000;

SELECT FROM scottemp where empno=7369;

spool off

EOF

)

echo $result

~

~

~

~

~

~

~

~

~

"testsh" 14L, 256C written

oracle@:~> /testsh

7369 SMITH CLERK 7902 17-DEC-80 224006 20

oracle@:~> more testtxt

7369 SMITH CLERK 7902 17-DEC-80 224006

20

通过代码来连接。

oracle19c安装好之后导入scottsql脚本(可以在oracle的安装目录的查找)之后在通过代码连接scott就可以登陆了。

Oracle19c也就是12203,是OracleDatabase12c和18c系列产品的最终版本,因此也是“长期支持”版本(以前称为“终端版本”)。

以上就是关于达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本全部的内容,包括:达梦数据库怎么写shell脚本,怎么通过shell脚本调用sql脚本、怎么样用shell做一个连接oracle数据库的脚本、求给个linux下oracle数据库导出的shell脚本等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10103604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存