51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

关于Linux脚本中调用达梦数据库disql执行SQL或SQL脚本的方法

一、前言

在Linux操作系统下使用shell脚本调用disql执行SQL或SQL脚本,是我们使用数据库一定会遇到的问题。有时需要直接执行SQL,有时需要执行SQL脚本,有时可以从dmdba用户调用,有时必须从root用户调用,总之,具体的情况不尽相同。本文就来详细介绍一下这些不同方式的具体方法。

二、详细教程

2.1 dmdba下操作

2.1.1 disql直接执行SQL

disql / as sysdba -e "select * from v$instance;"

注意:"$"需要进行转义

2.1.2 disql执行SQL脚本

disql / as sysdba \`/home/dmdba/select.sql

注意:脚本中要加上 exit; 和 /。并且以SQL脚本的方式执行时"$"不需要转义,例如:

[dmdba@shine ~]$ cat select.sql 
select * from v$instance;
exit;
/

2.2 root用户下操作

2.2.1 disql直接执行SQL

su - dmdba -c "disql / as sysdba -e \"select * from v\\\$instance;\""

注意:从root直接调用的话,SQL中的"$"需要转义,同时转义符"\"本身也需要转义(所以加三个"\")。

2.2.2 disql执行SQL脚本

su - dmdba -c "disql / as sysdba \\\`/home/dmdba/select.sql"

注意:同上,从root直接调用的话,"\`"同时需要转义,即"\\\`"。

2.2.3 切换dmdba用户执行shell脚本

su - dmdba -s /bin/bash select.sh

注意:select.sh要放到/home/dmdba目录下,内容如下:

disql / as sysdba -e "select * from v$instance;"

脚本内容即 2.1.1 的命令。

三、进阶教程

有时我们在调用disql执行SQL时需要将内容输出到文件并保存,那么就需要用到如下的功能。

(1)重定向到文件

只需要在命令后边加上 > your_file.txt。

(2)隐藏disql连接数据库时的输出内容

disql -S

注意:disql的-S参数是隐藏标识符,需要在登录之前配置,所以-S参数要放到 / as sysdba 之前,例如:disql -S / as sysdba。

赞(0)
未经允许不得转载:工具盒子 » 关于Linux脚本中调用达梦数据库disql执行SQL或SQL脚本的方法