DIsql 是 DM 数据库的一个命令行客户端工具,识别用户的输入,将用户输入的 SQL 语句打包发送给 DM 数据库服务器执行。
SQL | DISQL |
---|---|
ANSI 标准 | DM 内部标准 |
语言 | 命令 |
关健字不可缩写 | 关健字可缩写 |
部分语句以分号结束,部分语句以/结束 | 分号可有可无,/完全用不到 |
可以更新表中的数据 | 不能更新表中的数据 |
在 WINDOWS 环境中安装 DM 数据库产品,那么可以在应用菜单中找到SQL交互式查询工具,双击即可启动。使用 LOGIN 或 CONN 命令登录到指定数据库
DIsql 位于 F:\dmdbms\bin\DIsql.exe。双击启动
(1)例如:
./disql SYSDBA/[email protected]:5236#"{mpp_type=local,inet_type=tcp}"
(2)<运行脚本>:`符号运行 sql 脚本文件运行脚本:建议使用绝对路径。例如:e:\a.sql 为包含了一条 select * from dual;语句的脚本文件。
disql SYSDBA/[email protected]: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"
假如用户名为 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)操作系统的要求:
(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 界面中,直接输入 LOGIN 命令后,屏幕会提示输入登录信息
服务名:默认为 LOCALHOST(本地服务器)。
用户名和密码:默认均为 SYSDBA,密码不回显。
端口号:默认为 5236。
SSL 路径和 SSL 密码:服务器通信加密,缺省为不设置。
UKEY 名称和 UKEY PIN 码:供使用 UKEY 的用户使用,普通用户不用设置,缺省为不使用。
MPP 类型:有效值为 GLOBAL 和 LOCAL,默认为 GLOBAL。
是否读写分离(y/n):默认 n。
协议类型:默认 TCP,可选 TCP|UDP|IPC(共享内存)|RDMA(远程直接内存访问)|UNIXSOCKET。
SQL>LOGOUT
断开连接而不退出 DISQL
例如:连接一个IP地址为192.168.1.150的数据库
SQL>CONN SYSDBA/[email protected]
SQL>DISCONN
断开连接而不退出 DISQL
连接好数据库之后,输入SQL语句就ok了,DIsql 将 SQL 语句发送给 DM 数据库服务器并显示服务器返回的结果
SQL>EXIT
语句 | 意义 |
---|---|
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 ON
两个配置文件 glogin.sql 和 login.sql(需自行创建)
文件 | 存放路径 |
---|---|
glogin.sql | 存放在$DM_HOME/bin/disql_conf 路径下(disql_conf自行创建) |
login.sql | 存放路径不做限制 |
执行顺序: glogin.sql——>login.sql
1.帮助HELP
#查询该命令的帮助信息
HELP 命令名
#将查询结果输出到指定文件
执行上述语句,控制台打印查询结果,并将查询结果输出到指定文件 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;
LIST n|m|*|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]
用<`运行脚本>或者
DIsql SYSDBA/SYSDBA `D:\test.sql
SQL>start D:\test.sql 或
SQL>`D:\test.sql
格式:ED[IT][
例如:
SQL>EDIT D:\test.sql 或
SQL>edit #如果省略文件,只会修改缓冲区的最后一条 SQL 语句
替换变量前带有一个前缀标志符(默认是&),来源于脚本参数带入、脚本中直接定义、用户动态输入。
脚本带参,参数名只能是数字,且通过&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
#参数值个数要与脚本中的变量个数一一对应
如脚本 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)脚本中定义参数值
格式:
PROMPT <输出内容>
会直接打印出相关信息。
达梦在线服务平台:https://eco.dameng.com/