- 一、DISQL基础
- 1.DISQL的定义
- 2.SQL 语句和 DISQL命令的区别
- 3.启动DISQL
- 3.1 windows中程序菜单启动
- 3.2 自带DIsql工具启动
- 3.3 命令行启动
- 3.4 password中特殊字符的书写规范
- 3.4.1 windows系统
- 3.4.2 Linux系统
- 4.使用DISQL登录/退出数据库
- 4.1 LOGIN登录
- 4.2 LOGOUT注销
- 4.3 CONN[ECT]连接
- 4.4DISCONN[ECT]断开连接
- 5.使用DISQL和退出
- 5.1使用DISQL
- 5.2退出DISQL
- 6. SET命令设置环境变量
- 6.1SHOW命令查看环境变量
- 6.2配置文件设置环境变量
- 二、DISQL常用命令
- 三、DISQL中使用脚本
- 1.用START命令运行脚本
- 1.1启动DISQL时,运行脚本(D:test.sql)
- 1.2进入DIsql之后,运行脚本
- 2.用EDIT编辑脚本
- 3.在脚本中使用变量
- 3.1脚本带参
- 4.PROMPT命令传递信息
DIsql 是 DM 数据库的一个命令行客户端工具,识别用户的输入,将用户输入的 SQL 语句打包发送给 DM 数据库服务器执行。
2.SQL 语句和 DISQL命令的区别| SQL | DISQL |
|---|---|
| ANSI 标准 | DM 内部标准 |
| 语言 | 命令 |
| 关健字不可缩写 | 关健字可缩写 |
| 部分语句以分号结束,部分语句以/结束 | 分号可有可无,/完全用不到 |
| 可以更新表中的数据 | 不能更新表中的数据 |
在 WINDOWS 环境中安装 DM 数据库产品,那么可以在应用菜单中找到SQL交互式查询工具,双击即可启动。使用 LOGIN 或 CONN 命令登录到指定数据库
DIsql 位于 F:dmdbmsbinDIsql.exe。双击启动
(1)例如:
./disql SYSDBA/SYSDBA@192.168.1.64:5236#"{mpp_type=local,inet_type=tcp}"
(2)<运行脚本>:`符号运行 sql 脚本文件运行脚本:建议使用绝对路径。例如:e:a.sql 为包含了一条 select * from dual;语句的脚本文件。
disql SYSDBA/SYSDBA@192.168.1.64:5236 `e:a.sql
或
SQL> `e:a.sql
(3)
SQL> start e:a.sql
(4)直接执行语句:使用-E 参数,将在运行 DIsql 时直接执行后续的一条或多条 SQL语句,例如:
DIsql SYSDBA/SYSDBA -E "SELECt TOP 1 * FROM SYSOBJECTS; SELECt TOP 1 * FROM V$CMD_HISTORY"3.4 password中特殊字符的书写规范 3.4.1 windows系统
假如用户名为 user01
| 特殊字符 | 书写规范 | 连接串写成 |
|---|---|---|
| DISQL关键字符 | DIsql 要求对特殊字符要用, 系统要求加双引号和转义;密码为 aaaa/aaaa | DIsql user01/”””aaaa/aaaa””” |
| 空格 | 要用双引号括起来作为一个整体;密码为 aaaa aaaa | DIsql user01/”aaaa aaaa” |
| 双引号 | DIsql 要求对双引要用双引,且要转义,系统要求对双引号转义和最外层加双引号”””aaaa””””aaaa”””;密码为 aaaa”aaaa | DIsql user01/”””aaaa””””aaaa”””。 |
(1)操作系统的要求:
- 在单引号中,所有的特殊字符都失去其特殊含义:‘aaaaaaaa’ 传给 disql 为 aaaaaaaa
- 如果密码只有单引号,那么可以将单引号用双引号括起来:“aaaa’aaaa” 传给 disql 为 aaaa’aaaa
- 如果既有单引号又有$、`、、!四个特殊字符,那么在其之前加转义:“aaa’$aaaa” 传给 disql 为 aaa’$aaaa
(2)DISQL的要求:假如用户名为 user01
| 特殊字符 | 书写规范 | 连接串要写成 |
|---|---|---|
| DIsql 关键字符 | 要使用双引号括起来;密码aaaa/aaaa | ./DIsql user01/’”aaaa/aaaa”’ |
| 双引号 | 要用双引号括起来,也需要转义;密码aaa”aaaa | ./DIsql user01/’”aaa””aaaa”’ |
| 单引号 | 只能将单引号放入双引号中;密码aaaa’aaaa | ./DIsql user01/”aaaa’aaaa” |
| 单引号+特殊字符 | 单引只能放在双引内,双引中特殊字符需加反斜杠转义;密码aaa’$aaaa | ./DIsql user01/”aaa’$aaaa” |
| 单引号+双引号 | 单引放在双引中,在双引中表示双引用反斜杠转义;密码aaa”'aaaa | ./DIsql user01/””aaa””'aaaa”” |
(3)转义双引号
- DISQL要求用双引号进行转义
- Windows命令行,用双引号或反斜杠进行转义
- Linux命令行使用反斜杠进行转义
在 DIsql 界面中,直接输入 LOGIN 命令后,屏幕会提示输入登录信息
服务名:默认为 LOCALHOST(本地服务器)。
用户名和密码:默认均为 SYSDBA,密码不回显。
端口号:默认为 5236。
SSL 路径和 SSL 密码:服务器通信加密,缺省为不设置。
UKEY 名称和 UKEY PIN 码:供使用 UKEY 的用户使用,普通用户不用设置,缺省为不使用。
MPP 类型:有效值为 GLOBAL 和 LOCAL,默认为 GLOBAL。
是否读写分离(y/n):默认 n。
协议类型:默认 TCP,可选 TCP|UDP|IPC(共享内存)|RDMA(远程直接内存访问)|UNIXSOCKET。
4.2 LOGOUT注销SQL>LOGOUT
断开连接而不退出 DISQL
4.3 CONN[ECT]连接例如:连接一个IP地址为192.168.1.150的数据库
SQL>CONN SYSDBA/SYSDBA@192.168.1.1504.4DISCONN[ECT]断开连接
SQL>DISCONN
断开连接而不退出 DISQL
5.使用DISQL和退出 5.1使用DISQL连接好数据库之后,输入SQL语句就ok了,DIsql 将 SQL 语句发送给 DM 数据库服务器并显示服务器返回的结果
5.2退出DISQLSQL>EXIT6. SET命令设置环境变量
| 语句 | 意义 |
|---|---|
| SET AUTO[COMMIT] | 设置自动提交 |
| SET DEFINE | c:打开 DEFINE 功能,c 前缀符号;ON:默认前缀符号& |
| SET ECHO | START 命令执行一个 SQL 脚本时,是否显示脚本中正在执行的 SQL 语句 |
| SET FEED[BACK] <6(默认值)|n|ON|OFF> | 是否显示当前 SQL 语句查询或修改的总行数(n:表示结果大于 n 行时,才显示结果的总行数) |
| SET HEA[DING] | 是否显示列标题 |
| SET LINESHOW | 是否显示行号 |
| SET PAGES[IZE] <14(默认值)|n> | 设置一页有多少行数 |
| SET TIMING | 显示每个 SQL 语句花费的执行时间 |
| SET LINESIZE | 设置屏幕上一行显示宽度 |
例如:查看 HEADING 和 TIMING 两个变量:
SQL> SHOW HEADING TIMING HEADING ON. TIMING ON6.2配置文件设置环境变量
两个配置文件 glogin.sql 和 login.sql(需自行创建)
| 文件 | 存放路径 |
|---|---|
| glogin.sql | 存放在$DM_HOME/bin/disql_conf 路径下(disql_conf自行创建) |
| login.sql | 存放路径不做限制 |
执行顺序: glogin.sql——>login.sql
二、DISQL常用命令1.帮助HELP
#查询该命令的帮助信息
HELP 命令名
2.输出文件SPOOL
#将查询结果输出到指定文件
执行上述语句,控制台打印查询结果,并将查询结果输出到指定文件 d:b.sql 中
执行上述语句,控制台不打印查询结果,只将查询结果输出到指定文件 d:b.sql 中
3.切换到操作系统命令HOST
使用 HOST 命令可以不用退出 DIsql 就能执行操作系统命令
SQL>HOST 操作系统命令
4.获取对象结构信息DESCRIBE
例如: 获取表 sysgrants 的结构描述
5.定义本地变量
(1)DEFINE
DEFINE 定义的变量会保存在环境 DIsql 环境中
关闭变量替换:
SQL>SET DEFINE OFF
DEFINE 变量定义为整型
(2)查看执行计划EXPLAIN
SQL>EXPLAIN select count(*) from sysobjects;
(3)LIST显示SQL语句或块信息
LIST n|m|*|LAST;
- n ,m :数值 SQL 行号。
- *: 当前行号。
- LAST: 最后一行。
(4)插入大对象数据
大数据的插入值格式为:@‘path’
例如,在 test 表中插入大对象 e:DSC_1663.jpg。
create table test(a int,b image); @insert into test values(1,@'e:DSC_1663.jpg');
(5)CLEAR清理缓存
语法格式:CL[EAR]
- COL[UMNS]:清理所有的 COLUMN 变量信息。
- SQL:清理本地 SQL 缓存信息。
- SCR[EEN]:清理 DIsql 终端屏幕信息。
- BUFF[ER]:同 SQL 功能一样,清理本地 SQL 缓存信息。
用<`运行脚本>或者
DIsql SYSDBA/SYSDBA `D:test.sql1.2进入DIsql之后,运行脚本
SQL>start D:test.sql 或 SQL>`D:test.sql2.用EDIT编辑脚本
格式:ED[IT][
例如:
SQL>EDIT D:test.sql 或 SQL>edit #如果省略文件,只会修改缓冲区的最后一条 SQL 语句3.在脚本中使用变量
替换变量前带有一个前缀标志符(默认是&),来源于脚本参数带入、脚本中直接定义、用户动态输入。
3.1脚本带参脚本带参,参数名只能是数字,且通过&n 来引用参数,n 为 1 表示为第一个参数,例如:
(1)建表:
create table test(id int); insert into test values(11); insert into test values(12); insert into test values(15);
(2)脚本 D:test.sql 如下:
select * from test where id = &1; select * from test where id = &2; select * from test where id = &3;
(3)运行脚本:
`D:test.sql 11 12 13 #参数值个数要与脚本中的变量个数一一对应
(4)参数要求
- 如参数值是数字,写法没有特殊要求。
- 如参数值是字符串,用单引号扩起,如字符串有空格,应该在单引号外面,再加上双引号扩起。
如脚本 D:test1.sql:
create table test1(a varchar);
insert into test1 values('hello');
insert into test1 values('hello world');
select * from test1 where a = &1;
select * from test1 where a = &2;
执行脚本:
SQL>`D:test1.sql 'hello' "'hello world'"
(5)脚本中定义参数值
- 使用 DEFINE 命令定义变量值,格式:DEFINE 标识符 = 值。
- 运行脚本时不带参数,脚本中也不定义参数时,会让用户输入参数,从而实现用户交互输入参数值。
格式:
PROMPT <输出内容>
会直接打印出相关信息。
达梦在线服务平台:https://eco.dameng.com/



