达梦数据库-disql之SQL脚本使用

达梦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手册。

更多资讯请上达梦技术社区了解: https://eco.dameng.com

### 如何使用达梦数据库DISQL 客户端通过指定端口进行登录 要通过 DISQL 客户端并指定端口登录达梦数据库,可以按照以下方式进行操作: #### 方法一:CMD 命令行方式 在 Windows 系统中,可以通过命令提示符(CMD)进入达梦数据库安装目录下的 `bin` 文件夹,并使用 `disql` 命令完成登录。 1. 打开 CMD 并切换至达梦数据库的 `bin` 目录: ```bash cd C:\dmdbms\bin\ ``` 2. 输入 `disql` 命令并提供完整的连接参数。以下是通用格式: ```bash disql 用户名/密码@主机地址:端口号 ``` 例如,假设用户名为 `SYSDBA`,密码为 `SYSDBA`,目标服务器 IP 地址为 `localhost`,端口号为 `5236`,则命令如下: ```bash disql SYSDBA/SYSDBA@localhost:5236 ``` 如果成功,则会进入 DISQL 字符界面[^1]。 #### 方法二:图形化菜单方式 另一种方法是通过系统的开始菜单启动 DISQL 工具。 1. 在 Windows 开始菜单中找到 **达梦数据库** -> **SQL 交互式查询工具**。 2. 启动后,在字符界面上输入 `LOGIN` 或者 `CONN` 命令来手动设置连接参数。例如: ```sql LOGIN SYSDBA/SYSDBA@localhost:5236; ``` 此处需要注意的是,当使用 `LOGIN` 或 `CONNECT` 命令时,如果已经存在旧会话,新的会话将会自动断开之前的连接[^2]。 #### 解决“未连接”问题 如果遇到 “未连接” 错误消息,可能的原因包括但不限于网络配置错误、服务未正常启动或防火墙阻止访问等问题。此时可尝试以下排查措施: - 验证数据库服务是否已启动; - 检查本地防火墙规则是否有阻拦特定端口的数据传输; - 确认所提供的用户名、密码以及端口号无误[^3]。 ```python # 示例 Python 脚本用于验证端口连通性 import socket def check_port(host, port): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: result = sock.connect_ex((host, int(port))) if result == 0: print(f"Port {port} is open on host {host}.") else: print(f"Port {port} is not reachable on host {host}.") except Exception as e: print(e) check_port('localhost', '5236') ``` 以上代码可以帮助测试目标主机上的指定端口是否开放。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

气可鼓不可泄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值