达梦disql调用sql语句
达梦数据库提供disql工具,我们可以通过disql工具使用命令行方式来查询SQL并将执行结果保留在指定文件中。对于达梦数据库内置的系统视图可以在达梦管理员手册的附录二
1、使用disql执行sql脚本
配置disql全局登录
vi ~/.bash_profile#编辑dmdba用户的环境变量
#添加如下内容
export DM_HOME="/home/dmdba/dmdbms"
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
export PATH=$PATH:$DM_HOME/bin
编辑一个sql文件,用于记录登录信息和需要执行的sql语句
vim dmtest.sql
#添加如下内容
conn TEST/123456789@LOCALHOST:5236
select * from v$instance;
exit;
使用disql的相关命令就可以完成对指定sql的查询,
disql /nolog \`dmtest.sql
2、调用disql
使用disql调用sql脚本可以完成不输入sql的情况下对指定sql进行查询,那么否有更加便捷的方法让每次的查询结果都保存在指定的文件中呢?
先写一个shell脚本,通过脚本调用disql
vim dmtest.sh
#添加以下内容
#/bin/bash
disql /nolog \`dmtest.sql
目前disql的执行都是前台显示的,让它输入到指定文件中
vim dmtest.sh
#添加以下内容
#/bin/bash
dmdate=$(date "+%Y%m%d%H%M%S")
disql /nolog \`dmtest.sql >dmtest_${dmdate}.log
#如果需要前台显示,请增加以下内容
cat dmtst_${dmdate}.log
这样我们就完成后台执行sql脚本并将执行结果写到指定文件中
3、更加优雅的使用方式
选择更加优雅的方式调用disql,并增加具体的中文解释。将查询sql的结果赋值给变量,这样就可以增加个性化的定制
#! /bin/bash
#设置dmdbms/bin全局路径
export PATH=$PATH:/home/dmdba/dmdbms/bin
export LD_LIBRARY_PATH=/home/dmdba/dmdbms/bin:$LD_LIBRARY_PATH
#设置用户名和密码、端口
DB_USER=SYSDBA
DB_PASS=SYSDBA
DB_PORT=5248
dt=`date +"%Y_%m_%d_%H_%M"`
v_date=$(date)
echo 执行时间:$v_date >dmtest_${dmdate}.log
db_instance_name=$(disql -s ${DB_USER}/\"${DB_PASS}\"@LOCALHOST:${DB_PORT} <<"EOF"
SET ECHO OFF;
SET FEED OFF;
SET HEA OFF;
SET LINESHOW OFF;
SET NEWP 0;
SET PAGES 0;
SET TIMING OFF;
select INSTANCE_NAME from v$instance;
exit
EOF
)
echo 数据库实例名:$db_instance_name >dmtest_${dmdate}.log
cat dmtest_${dmdate}.log
运行结果,获取数据的实例名
disql的环境变量详细说明见达梦disql手册。