达梦数据库-disql连接及脚本执行

本文详细介绍了如何在DISQL环境下连接MPP数据库、执行SQL语句以及运行脚本,包括操作系统中、disql命令行下的操作步骤,并区分了Windows和Linux系统的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、实验要求

深入学习DISQL下各种连接数据库的方法和执行SQL、脚本的方法。

二、功能描述

disql 用法1:disql –h|help显示disql版本信息和帮助信息
disql 用法2:disql [ [<option>] [<logon> |{/NOLOG}] [<start>] ]
<option>::=[-L] [-S]
<logon>::={{<username>[/<password>]}|/}[@<connect_identifier>][<logon_option>] [<os_auth>] 
<connect_identifier> ::=<svc_name> | {<host>[:<port>]} | <unixsocket_file>
< logon_option >::=<option_no_esc>|<option_esc>
<option_no_esc >::= #{ <extend_option>=<value>{,<extend_option>=<value>} }  //此行外层{}是为了封装参数之用,书写时需要保留
<option_esc>::= # "{ <extend_option>=<value>{,<extend_option>=<value>} } "  //此行外层"{}"是为了封装参数之用,书写时需要保留
<os_auth>::= AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
<start>::=<`运行脚本>|<start运行脚本>|<直接执行语句>|<直接执行SET命令>
<`运行脚本>::=`<file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
<start运行脚本>::=START <file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
<直接执行语句>::= -E "<SQL语句>{;<SQL语句>}"
<直接执行设置DIsql属性命令>::= -C "<SET命令 | COLUMN命令>"

说明:
-h|help: h 或 help 表示显示 DIsql 版本信息和帮助信息。
[-L] [-S]:-L 表示只尝试登录一次;-S 表示设置 DIsql 界面为隐藏模式,隐藏<SQL> 标识符。
{{<username>[/<password>]} | /}<username>[/<password>]为用户名和密码。普通登录方式时用户名必写,密码缺省为 SYSDBA。/表示采用操作系统身份验证方式登录,此时无需指定用户名和密码,即使指定也会被忽略。如果 <password>中含有特殊字符,因为特殊字符在操作系统中需要被特殊处理,因此特殊字符书写的时候需要按照要求的格式。
<svc_name>: 服务名。服务名在 dm_svc.conf 中配置。dm_svc.conf 的配置请参考《DM8 系统管理员手册》。使用服务名的好处是第一个 IP 连不通,会自动连接下一个。
<host>[:<port>]: 服务器 IP 地址和端口号。缺省情况下默认为本地服务器和端口号 LOCALHOST:5236。
<unixsocket_file>: 专门用于在 LINUX 系统中,当服务器与客户端之间使用 UNIXSOCKET(UNIX DOMAIN SOCKET - IPC)协议通信时,指定客户端连接的 socket 文件路径。
<logon_option>:为扩展选项,包括 <option_no_esc><option_esc>两种书写方式,两种方式除了书写封装符号#{}和#"{ }"不同,其他一样。<option_no_esc> 适用于 Window 环境和一个 Linux 环境特殊情况(只包含一个扩展选项的情况,例如:#{inet_type=tcp})。<option_esc> 适用于 Windows 和 Linux 环境。<extend_option>=<value>中所有 value 值不能包含空格,不能包含特殊的符号,如引号等。现支持的扩展选项 <extend_option> 请见官方手册。

三、实验步骤

1 disql连接数据库

1.1 操作系统中连接数据库

如使用MPP数据库时,登录到MPP的本地节点查询。

/dm8/bin/disql SYSDBA/SYSDBA@192.168.75.151:5230#"{mpp_type=local}"

在这里插入图片描述

1.2 disql中连接数据库

SQL> conn SYSDBA/SYSDBA@localhost:6002

在这里插入图片描述

2 disql执行sql

2.1 进入disql后执行

[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:6001
SQL> select * from t1;

在这里插入图片描述

2.2 在disql命令后执行

在登录命令后跟-e或者-E,然后再跟上执行的命令

[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:6001 -e "SELECT * FROM T1;"
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:6001 -E "SELECT * FROM T1;"

在这里插入图片描述

3 disql执行脚本

3.1 在disql命令后面

3.1.1 Windows系统

CMD下:

d:\DM>disql SYSDBA/SYSDBA@localhost:5234 `d:\DM\test.sql

在这里插入图片描述

PowerShell下:

PS D:\DM\bin> ./disql SYSDBA/SYSDBA@localhost:5234 ``D:\DM\test.sql

在这里插入图片描述

3.1.2Linux系统
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:6002 \`/dm8/test.sql

在这里插入图片描述

3.2 登录数据库系统后

3.2.1 `符号方式
SQL> `/dm8/test.sql

在这里插入图片描述

3.2.2 start方式
SQL> start /dm8/test.sql

在这里插入图片描述

社区地址: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') ``` 以上代码可以帮助测试目标主机上的指定端口是否开放。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值