Disql日常使用整理

  1. 功能简介

DIsql是DM数据库的一个命令行客户端工具,跟Oracle数据库的sqlplus工具一样,用来与 DM 数据库服务器进行交互。

DIsql 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在应用菜单和安装目录中找到。

DIsql 识别用户输入,将用户输入的 SQL 语句打包发送给 DM 数据库服务器执行,并接收服务器的执行结果,并按用户的要求将执行结果展示给用户。为了更好地与用户交互和展示执行结果,用户也可以在 DIsql 中执行 DIsql 命令,这些命令由 DIsql 工具自身进行处理,不被发送给数据库服务器。

  1. Disql启动

Disql 的启动方式比较简单,配置操作系统环境变量PATH的值,将$DM_HOME/bin目录(DM_HOME为达梦数据库软件安装目录)加入到系统PATH环境变量中,即可随时通过命令行,输入Disql启动交互窗口。在Windows操作系统下,还可以通过应用菜单,直接找到达梦数据库安装菜单中的SQL交互查询工具,可以直接启动使用disql交互窗口。

当然,也可以直接切换至达梦数据库软件安装目录的bin目录下,直接在命令行输入disql启动。

  1. Disql使用帮助

作用:可以帮助用户查看其他命令的具体用法。用户可以看到其他命令系统显示的内容。

语法如下:

[dmdba@dmdb ~]$ disql help

disql V8

DISQL 用法1:disql -h|help  显示disql版本信息和帮助信息

DISQL 用法2:disql [ [<option>] [{<logon> | /NOLOG}] [<start>] ]

<option> 为: [-L] [-S]

  -L 只尝试登录一次

  -S 隐藏模式,隐藏<SQL>标识符

<logon>为: {<username>[/<password>][*<MPP_TYPE>][@<connect_identifier>]} | {/ AS <SYSDBA|SYSSSO|SYSAUDITOR|AUTO>}

<connect_identifier>为{[<server>][:<port>][?{UDP|TCP|IPC|RDMA}][#<sslpath>@<sslpwd>]}

<server>如果是IPv6的地址,需要用[]指明是IPv6地址,例如[fe80::1e6f:65ff:fed1:3724%6]

<start> : `<filename>[<parameter> ...]<direct sql> 运行disql脚本

/NOLOG 选项能在未登录DM服务器的情况下启动disql

<direct sql>:-e "<SQL语句>[;<SQL语句>]"

  1. Disql命令使用示例
    1. SPOOL

作用:将屏幕显示的内容输出到指定文件

用法: SPOOL { <file> | OFF }

 <file> 是 file_name[.ext] [CRE[ATE]|REP[LACE]|APP[END]]

说明:

  1. file:指定文件的[绝对路径]名称,如果不指定路径,则文件默认保存在用户使用disql命令登录DM数据库时目录下。
  2. CRE[ATE]:创建指定的文件,若指定的文件已存,则报错,默认方式
  3. REP[LACE]:创建指定的文件,若指定的文件已存,则替换它
  4. APP[END]]:将输出内容追加到指定文件的末尾
  5. OFF:关闭SPOOL 输出

示例:

SQL> spool /home/dmdba/aa.txt rep

SQL> select empno,ename,sal,deptno from emp;

SQL> spool off;

    1. HOST

作用: 使用HOST命令可以不用退出DIsql就能执行操作系统命令。如果单独执行host,则能够直接从DIsql界面切换到操作系统,之后可使用 EXIT回到 DIsql界面。

语法如下:

HOST []

示例如下:

SQL> host pwd

/home/dmdba

提示:如果在SQL>窗口中只输入host命令,没有带上相关的系统命令,则会退出到系统命令窗口,执行完相关的系统命令后,再执行exit命令,则回到SQL命令窗口。

    1. DESCRIB

作用:获取表或视图、存储过程、函数、包、记录、类的结构描述。

语法如下:

法: DESC[RIBE] [模式名.]对象名

示例:

SQL> desc emp

    1. DEFINE

作用:用来定义一个本地变量的替代变量,然后对该变量赋一个CHAR类型的值;或者输出变量的值和类型。

语法如下:

DEF[INE] [|< VARIABLE >]

DEF[INE] VARIABLE = text:申明一个变量,如果该变量存,则重新赋值,否则新生成一个变量,并进行赋值。

DEF[INE] VARIABLE:如果该变量存,则输出特定VARIABLE的值和类型,否则报错。

DEF[INE]:输出DIsql中所有的变量的值和类型。

该命令定义的替代变量当前的DIsql环境和/NOLOG环境中均可以起作用。DEFINE定义的变量会保存环境DIsql环境中,可以SQL语句中使用。默认的变量前缀是&。

示例如下:

SQL> def no=7788;

SQL> select ename,sal,deptno from emp where empno=&no;

    1. EXPLAIN

作用:用EXPLAIN命令来查看查询语句的执行计划。

语法如下:

EXPLAIN <sql_clause>

示例:

SQL> explain select * from scott.emp;

1   #NSET2: [0, 14, 266]

2     #PRJT2: [0, 14, 266]; exp_num(9), is_atom(FALSE)

3       #CSCN2: [0, 14, 266]; INDEX33555660(EMP)

9.显示SQL语句或块信息LIST

显示最近执行的SQL语句或者PL/SQL块信息。不显示DIsql命令。

    1. LIST

显示最近执行的 SQL 语句或者 PL/SQL 块信息。不显示 DIsql 命令。

语法如下:

L[IST] [n | n m | n * | n LAST | * | * n | * LAST | LAST] 或者 ;

n ,m :数值 SQL 行号。

*: 当前行号。

LAST: 最后一行。

示例:

SQL> l

1* select * from dept;

    1. disql命令直接执行SQL文件

disql sysdba/dameng123 \`test.sql

或是进行disql命令窗口中再使用start命令执行SQL文件,如下:

SQL> start test.sql

或是直接在disql命令后面使用-e参数,再跟上查询语句来执行:

disql sysdba/dameng123 -e "select * from tb;"   #对数据库自带的视图,如v$database查询时需要对$符进行转义

执行脚本

./disql SYSDBA/SYSDBA@LOCALHOST:5236 `/opt/dmdbms/test.sql

扩展:

linux下,需要使用双引号将密码包含进来,同时外层再使用单引号进行转移。

具体例子如下:

./disql EMP/'"abcd@efgh"'@localhost:5236

windows下,需要使用双引号将密码包含进来,同时对双引号使用\进行转移。

具体例子如下:

disql EMP/\"abcd@efgh\"@localhost:5236

    1. set命令收集

SET ECHO OFF; --显示脚本中正在执行的 SQL 语句

SET FEEDBACK OFF; --显示当前 SQL 语句查询或修改的行数

SET HEADING ON; --显示列标题

SET LINESHOW OFF; --显示行号

SET LINESIZE 1000; --设置屏幕上一行显示宽度

SET PAGESIZE 1000; --设置一页有多少行数

SET TIMING OFF; --显示每个 SQL 语句花费的执行时间

SET TIME OFF; --显示系统的当前时间

SET SERVEROUTPUT ON; --在块中有打印信息时,是否打印,以及打印的格式

SET CHAR_CODE DEFAULT; --设置 SQL 语句的编码方式GBK | GB18030| UTF8 | DEFAULT

SET COLSEP '|'; --设置 DPI 语句句柄中游标的类型

SET KEEPDATA ON; --是否为数据对齐进行优化,或者保持数据的原始格式。

SET TRIMSPOOL ON; --设置 spool 文件中每行的结尾空格

SPOOL /home/dmdba/dbchk20200609.txt --输出到文件

SPOOL OFF; --结束输出文件

  1. disql连接DM数据库的三种方式

Disql 连接DM实例的三种不同方式。

    1. DM 服务器上直接连接

[dmdba@dmdb ~]$ disql SYSDBA/dameng123

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 2.827(ms)

disql V8

SQL>

这种方式只能连接到本地实例。

    1. 使用IP地址和端口连接

这种方式可以连接到任意服务器,只要IP地址和端口正确即可。

[dmdba@dmdb ~]$ disql SYSDBA/dameng123@192.168.88.100:5236

服务器[192.168.88.100:5236]:处于普通打开状态

登录使用时间 : 2.547(ms)

disql V8

SQL>

或:

[dmdba@dmdb ~]$ disql /nolog

disql V8

SQL> conn SYSDBA/dameng123@192.168.88.100:5236

服务器[192.168.88.100:5236]:处于普通打开状态

登录使用时间 : 2.541(ms)

SQL>

提示:这种方式不足的地方就是每次都需要输入IP地址和端口,不是很方便。

    1. 使用service name 连接

相关配置文件:dm_svc.conf 文件。

cat /etc/dm_svc.conf

dmdb=(192.168.88.100:5236)

TIME_ZONE=(480)

LANGUAGE=(cn)

[dmdba@dmdb ~]$ disql sysdba/dameng123@dmdb

服务器[192.168.88.100:5236]:处于普通打开状态

登录使用时间 : 2.824(ms)

disql V8

SQL>

    1. 中断或退出Disql
  1. 方法一

直接在命令行输入disql 结合nolog参数,通过connect指定用户名、密码、主机、端口、网络协议登陆,使用disconnect退出连接

[dmdba@dmdb ~]$ disql SYSDBA/dameng123

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 2.708(ms)

disql V8

SQL> disconn

SQL> select user;

未连接

SQL>

  1. 方法二

直接在命令行输入disql 结合nolog参数,通过login方式登陆数据库,使用logout方式退出登陆。

[dmdba@dmdb ~]$ disql /nolog

disql V8

SQL> conn sysdba/dameng123

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 2.875(ms)

SQL> select user;

行号     USER()

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

1        SYSDBA

已用时间: 3.390(毫秒). 执行号:204.

SQL> logout

SQL> select user;

未连接

SQL>

  1. 方法三

disql退出直接使用exit|quit

[dmdba@dmdb ~]$ disql SYSDBA/dameng123

服务器[LOCALHOST:5236]:处于普通打开状态

登录使用时间 : 2.792(ms)

disql V8

SQL> quit;

[dmdba@dmdb ~]$

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心https://eco.dameng.com/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值