DM数据库工具--dlsql学习

DM数据库dlsql工具学习

Dlsql使用

  • 功能简介

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

    • DIsql 识别用户输入,将用户输入的 SQL 语句打包发送给 DM 数据库服务器执行,并接收服务器的执行结果,并按用户的要求将执行结果展示给用户。

    • SQL 语句在 DIsql 中执行完后都被保存在一个特定的内存区域中,用户可以通过上下键查找到这些保存在内存中的 SQL 语句(某些操作系统可能不支持此操作),并可以进行修改,然后再次执行。

      • SQL语句和Dlsql命令的区别

        SQL 语句DIsql 命令
        ANSI 标准DM 内部标准
        语言命令
        关键字不可缩写关键字可缩写
        部分语句以分号结束,部分语句以/结束分号可有可无,/完全用不到
        可以更新表中的数据不能更新表中的数据
  • Dlsql入门

    • 启动dlsql

      • Windows中启动dlsql

        • 开始菜单,DM交互式工具

          在这里插入图片描述

          • 启动成功后会出现SQL>的标志
        • 以login为例,登录到192.168.130.42机器上,用户名和密码为:SYSDBA/SYSDBA,其他全部敲回车,采用默认输入。

          在这里插入图片描述

          • 也可以全部直接回车,采用默认输入,登录到本地 DM 数据库
      • 命令行启动

        • 找到工具Dlsql所在的安装目录C:\dmdbms\bin,在搜索栏输入Dlsql进行登录

          在这里插入图片描述

        • Dlsql登录方式

          • 语法(我丢,看不了一点,但还是要说明一下):

            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 界面为隐藏模式,隐藏 标识符。

            • {{[/]} | /}:[/]为用户名和密码。普通登录方式时用户名必写,密码默认为 SYSDBA。/表示采用操作系统身份验证方式登录,此时无需指定用户名和密码,即使指定也会被忽略。

            • <svc_name>: 服务名。服务名在 dm_svc.conf 中配置。

            • [:]: 服务器 IP 地址和端口号。默认情况下默认为本地服务器和端口号 LOCALHOST:5236。当服务器为本机时,SERVER:PORT 可直接写 LOCALHOST。当连接其他服务器时,SERVER:PORT 需写上 IP 地址和 PORTNUM。

            • <unixsocket_file>: 专门用于在 LINUX 系统中,当服务器与客户端之间使用 UNIXSOCKET(UNIX DOMAIN SOCKET - IPC)协议通信时,指定客户端连接的 socket 文件路径。

              ./disql SYSDBA/SYSDBA@/data/sdb/DAMENG/foo.sock#{inet_type=UNIXSOCKET}
              
            • <logon_option>:为扩展选项,包括 <option_no_esc>和 <option_esc>两种书写方式,两种方式除了书写封装符号#{}和#"{ }"不同,其他一样。

              • 现在也支持扩展选项<extend_option>

                extend_optionvalue
                mpp_typeMPP 登录属性,此属性的设置对非 MPP 系统没有影响。取值 GLOBAL 和 LOCAL,默认为 GLOBAL。GLOBAL 表示 MPP 环境下建立的会话为全局会话,对数据库的导入导出操作在所有节点进行;LOCAL 表示 MPP 环境下建立的会话为本地会话,对数据库的导入导出操作只在本地节点进行
                inet_type网络通信协议类型。取值 TCP/UDP/IPC/UNIXSOCKET/RDMA,默认为 TCP。 TCP:传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议; UDP:用户数据报协议,是一种面向数据报的、不可靠的、可快速传输的传输层通信协议,和 TCP 协议互为补充。若应用程序对可靠性的要求较低,对传输性能要求较高,则可以选择 UDP 通信协议。使用 UDP 通信协议时,服务器需要设置 INI 参数 ENABLE_UDP 非 0; IPC:基于共享内存的通信协议,用于同一台主机的进程间通讯。使用 IPC 协议连接数据库时会忽略 IP 地址和端口号,直接连接本机上 INI 参数 ENABLE_IPC=1 的服务器,一台机器上只能有一个服务器设置 ENABLE_IPC=1; UNIXSOCKET:与 IPC 协议类似,同样用于同一台主机的进程间通讯。仅 LINUX 环境下支持 UNIXSOCKET 通信协议。使用 UNIXSOCKET 通信协议时,无需指定 IP 地址和端口号,但服务器需要配置 INI 参数 UNIX_SOCKET_PATHNAME 指定 socket 文件路径,客户端连接服务器时也需要指定 socket 文件路径,二者必须一致; RDMA:远程直接数据存取协议,通过网络将数据从一个系统快速移动到远程系统的存储器中,大大降低计算机处理性能的损耗。使用 RDMA 协议需要安装并配置 RDMA 网卡。使用 RDMA 协议连接数据库时需要指定 RDMA 网卡配置的 IP 地址以及服务器的端口号
                ssl_path通信加密的 SSL 数字证书路径,默认为不使用加密。数字证书路径由用户自己创建,将相应的证书需放入该文件夹中。其中服务器证书必须与 dmserver 目录同级,客户端目录可以任意设置。和 ssl_pwd 一起使用。 各用户只能使用自己的 SSL 数字证书,例如 SYSDBA 账户只能使用\bin\CLIENT_SSL\SYSDBA 下的证书和密码,如果证书没有密码可以用默认或任意数字代替。 例如:./disql SYSDBA/SYSDBA@192.168.1.64:5236#“{ssl_path= /home/dmdbms/bin/client_ssl/SYSDBA,ssl_pwd=12345}”
                ssl_pwd通信加密的 SSL 数字证书密码。和 ssl_path 一起使用。默认为不加密
                proxy_client被代理的用户名。 例如:被代理用户 USER1 的口令和密码为 USER111/ USER111。代理用户 USER2 的用户名和密码为 SYSDBA/SYSDBA。 首先,赋予用户 USER2 代理用户 USER1 的权限,使用户 USER2 可以认证登录用户 USER1。 SQL>ALTER USER USER1 GRANT CONNECT THROUGH USER2; 然后,使用代理用户 USER2 就能登录被代理用户 USER1 的数据库。 ./disql SYSDBA/SYSDBA@192.168.1.64:5236#“{inet_type=tcp,proxy_client=USER1}”
            • AS <SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO>:操作系统身份验证。用户可以通过将操作系统用户加入到操作系统的 dmdba|dmsso|dmauditor 用户组来使用操作系统用户登录数据库,分别对应数据库的 SYSDBA|SYSSSO|SYSAUDITOR 用户。

            • /NOLOG:表示在未登录 DM 服务器的情况下启动 disql。

              注意:

              命令中:<`运行脚本>既可以在DIsql启动时使用,也可以在进入DIsql界面之后使用。而只能在进入DIsql界面之后才能使用

            • **<运行脚本 >:**符号运行 sql 脚本文件。

              注意:

              Disql可使用的脚本文件大小上限为2G

              • 举例:

                disql [SYSDBA/SYSDBA@192.168.1.64:5236]`e:\a.sql
                或
                SQL> `e:\a.sql
                
            • <PARAMETER_VALUE>:传给 <file_path> 脚本文件中本地变量的参数值,将其中的参数内容传给变了&1,&2,&3…以此类推。

              SQL> start E:\b.txt CTL_PATH
              SQL> select name,type from V$PARAMETER where name='&1';
              
            • <start 运行脚本>:使用 START 命令运行 sql 脚本文件。

            • < 直接执行语句>:使用-E 参数,将在运行 DIsql 时直接执行后续的一条或多条 SQL 语句,查询结果不显示行号、执行时间以及执行号等信息,且不受-C 参数控制。

              disql SYSDBA/SYSDBA -E "SELECT TOP 1 * FROM SYSOBJECTS; SELECT TOP 1 * FROM V$CMD_HISTORY"
            • < 直接执行 SET 命令 >: 使用-C 参数,将在运行 DIsql 时直接执行后续的 SET 命令。

              disql SYSDBA/SYSDBA -C "SET LONG 1000 PAGESIZE 0"
    • 切换登录

      用户进入 DIsql 界面后,如果想切换到其他 DM 数据库实例。有两种实现方式:一是使用 LOGIN 命令;二是使用 CONN 命令。

      • LOGIN/LOGOUT

        • LOGIN登录主库建立会话

          在这里插入图片描述

          • 全部都ENTER,直接使用默认值
        • LOGOUT从登录主库注销会话

          SQL>LOGOUT
          
          • 直接输入logout即可
      • CONN[ECT]/DISCONN[ECT]

        • CONN[ECT]创建连接

          • 在DIsql界面使用CONN[ECT]登录远程数据库

            • 语法:

              CONN[ECT] <logon>
              <logon>::={{<username>[/<password>]} | /}[@<connect_identifier>][<login_option>] [<os_auth>] 
              <connect_identifier> ::=<svc_name> | {<host>[:<port>]} | <unixsocket_file>
              <login_option>::= <option_no_esc>
              <option_no_esc >::= #{ <extend_option>=<value>{,<extend_option>=<value>} }  //此行外层{}是为了封装参数之用,书写时需要保留
              <os_auth>::= AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}
              
              

              注意:

              使用CONN[ECT]建立新会话时,会自动断开先前会话

            • 示例:

              SQL>CONN SYSDBA/SYSDBA@118.31.249.249
              
        • DISCONN[ECT]断开连接

          • 断开连接而不退出 DIsql。与 logout 功能一样。

            SQL>DISCONN
            
    • 使用DIsql

      • 只需要输入一条 SQL 语句,回车即可。DIsql 将 SQL 语句发送给 DM 数据库服务器并显示服务器返回的结果。

        select top 5 name,id from sysobjects;
        

        在这里插入图片描述

    • 退出DIsql

      • 使用EXIT/QUIT
  • Disql环境变量配置

    使用 SET 命令可以对当前 DIsql 的环境变量进行设置。并通过 SHOW 命令来查看当前系统中环境变量的设置情况。

    • DIsql环境变量

      序号变量名称属性用途
      1AUTO[COMMIT]<ON|OFF (默认值)>设置自动提交
      2DEFINE<c(默认的变量前缀是&)|ON (默认值)|OFF>定义本地变量
      3ECHO<ON (默认值)|OFF>显示脚本中正在执行的 SQL 语句
      4FEED[BACK]<6 (默认值)|n|ON|OFF>显示当前 SQL 语句查询或修改的行数
      5HEA[DING]<ON (默认值)|OFF>显示列标题
      6LINESHOW<ON (默认值)|OFF>显示行号
      7NEWP[AGE]<1 (默认值)|n|NONE>设置页与页之间的分隔
      8PAGES[IZE]<14 (默认值)|n>设置一页有多少行数
      9TIMING<ON (默认值)|OFF>显示每个 SQL 语句花费的执行时间
      10TIME<ON|OFF (默认值)>显示系统的当前时间
      11VER[IFY]<ON (默认值)|OFF>列出环境变量被替换前、 后的控制命令文本
      12LONG<800 (默认值)|n>设置大字段类型显示的最大字节数
      13LINESIZE<screem_length (默认值,屏幕宽度)|n>设置屏幕上一行显示宽度
      14SERVEROUT[PUT]<ON | OFF (默认值)> [SIZE <20000 (默认值)|n>] [FOR[MAT] <WRA[PPED] | WOR[D_WRAPPED] (默认值) | TRU[NCATED]>]在块中有打印信息时, 是否打印,以及打印的格式
      15SCREENBUFSIZE<DEFAULT(20M) | n>设置屏幕缓冲区的长度
      16CHAR_CODE<GBK | GB18030 | UTF8 | DEFAULT (默认值,操作系统的编码方式)>设置 SQL 语句的编码方式
      17LOCAL_CODE<GBK| GB18030 | UTF8 | DEFAULT (默认值,操作系统的编码方式)>设置本地编码方式
      18CURSOR<STATIC | FORWARDONLY (默认值)| DEFAULT>设置 DPI 语句句柄中游标的类型
      19AUTOTRACE<OFF (默认值) | NL | INDEX | ON | TRACE | TRACEONLY>设置执行计划和统计信息的跟踪
      20DESCRIBE[DEPTH<1 (默认值) | n | ALL>] [LINE[NUM] <ON | OFF(默认值)>] [INDENT <ON (默认值) | OFF>]设置 DESCRIBE 的显示方式
      21TRIMS[POOL]<OFF (默认值)| ON>设置 spool 文件中每行的结尾空格
      22LOBCOMPLETE<OFF (默认值)| ON>设置大字段数据是否从服务器全部取出
      23COLSEP[text]设置列之间的分割符。默认为一个空格
      24KEEPDATA<ON|OFF (默认值)>是否为数据对齐进行优化,或者保持数据的原始格式。ON 不优化,OFF 对齐优化。默认为 OFF
      25AUTORECONN<ON (默认值)|OFF>是否自动重新连接。ON 是,OFF 否。默认为 ON
      26NEST_COMMENT<ON|OFF (默认值)>是否支持多行注释嵌套。ON 是,OFF 否。默认为 OFF
      27NULL_ASNULL<ON|OFF (默认值)>在绑定参数输入时,是否将输入的 NULL 当作数据库的 null 处理。ON 是,OFF 否。默认为 OFF
      28CMD_EXEC<ON (默认值)|OFF>是否执行文件中“/”命令。ON 是,OFF 否。默认为 ON
      29CHARDEL[text]设置字符串的限定符。默认为一个空格
      30FLOAT_SHOW<0 (默认值)|float_length>设置 FLOAT、DOUBLE 类型按科学计数法显示的分界长度。默认为 0,代表全部按科学计数法显示
      31CONSOLE_PRINT<ON (默认值)|OFF|OFF_WITH_TIME |OFF_WITH_FEEDBACK>控制台是否打印查询结果。ON 是,OFF 否。默认为 ON
      32SQLCODE<ON|OFF (默认值)>控制台是否打印 SQLCODE 返回值。ON 是,OFF 否。默认为 OFF
      33SQL_LINESHOW<ON (默认值)|OFF>输入多行 SQL 语句时,是否打印 SQL 语句的行号。ON 是,OFF 否。默认为 ON
      34NULL_SHOW<ON (默认值)|OFF>空数据是否显示为 NULL。ON 是,OFF 否。默认为 ON
      35SQLPROMPT*<*text>设置 DIsql 的命令行前缀标识
      36ISQL_MODE<0 (默认值)|1|2|3>结果集打印方式。0:DM 数据库的打印方式;1:兼容 ORACLE 的打印格式;2:兼容 Greenplum 的打印格式;3:兼容 MYSQL 的打印格式。默认为 0
      37WRAP<ON (默认值)|OFF>是否折行打印结果集。ON 是,OFF 否。默认为 ON 仅在 ISQL_MODE 为 1 时,该参数有效
      38CTRL_INFO<0 (默认值)|1|2|4|8>设置 DIsql 控制信息
      39RETRY_CONN<0 (默认值)|n>设置 DIsql 尝试自动重连的次数
      40RETRY_CONN_TIME<0 (默认值)|n>用于当 RETRY_CONN 为 n 时,设置 DIsql 自动重连时间间隔。单位:秒
      41ROWS<0 (默认值)|n>设置结果集最大显示行数
      42EXPLAIN_MODE< 0|1|2 >设置 SQL 执行方式
      43PREFIX_STR< 0|text >设置 SQL 执行时拼接指定前缀串
      44READ_ONLY< ON|OFF(默认值)>设置会话只读
    • SET命令用法

      • SET 命令用于设置 DIsql 系统环境变量。

        SET <system_variable><value>{ <system_variable><value>}
        
        • \<system_variable\>:变量名称
        • \<value\>:属性
    • 用SET命令设置环境变量详情

      • AUTO[COMMIT]

        • 设置当前 session 是否对修改的数据进行自动提交。
        SET AUTO[COMMIT] <ON|OFF>
        
        • ON:表示打开自动提交,所有执行的 SQL 语句的事务将自动进行提交。

          OFF:表示关闭自动提交,所有执行的 SQL 语句的事务将由用户显式提交,为默认设置。

      • DEFINT

        • 是否使用 DEFINE 定义本地变量。
        SET DEFINE<c(默认的变量前缀是&)|ON(默认值)|OFF>
        
        • 参数说明:

          • c:表示打开 DEFINE 功能,同时定义前缀变量符号,c 为定义的前缀符号。
          • ON:表示打开 DEFINE 功能,使用默认前缀符号&。
          • OFF:表示不使用 DEFINE 功能。
        • 示例:打开 DEFINE 功能,并设置##为变量前缀

          SQL> SET DEFINE #
          SQL> SELECT #A FROM DUAL;
          输入 A的值:1
          

          在这里插入图片描述

      • ECHO

        • 用 START 命令执行一个 SQL 脚本时,是否显示脚本中正在执行的 SQL 语句。
        SET ECHO <ON(默认值)|OFF>
        
      • FEED[BACK]

        • 是否显示当前 SQL 语句查询或修改的总行数。
        SET FEED[BACK] <6(默认值)|n|ON|OFF>
        
        • 参数说明:

          • n:表示结果大于 n 行时,才显示结果的总行数。
          • ON:打开显示开关,使用默认值 6。
          • OFF:关闭显示开关。
        • 示例:

          在这里插入图片描述

      • HEA[DING]

        • 是否显示列标题。
        SET HEA[DING] <ON(默认值)|OFF>
        
        • 示例:

          在这里插入图片描述

      • LINESHOW

        • lineshow 设置是否显示行号。
        SET LINESHOW<ON(默认值)|OFF >;
        
        • 默认为每行输出打印行号

        • 示例:

          在这里插入图片描述

      • NEWP[AGE]

        • 设置页与页之间的分隔。
        SET NEWP[AGE] <1(默认值)|n|NONE>
        
        • 当 set newpage 0 时,在每页的开头有一个换号符。
        • 当 set newpage n 时,在页和页之间隔着 n 个空行。
        • 当 set newpage none 时,在页和页之间没有任何间隔。
      • PAGES[IZE]

        • 设置一页有多少行数。
        SET PAGES[IZE] <14(默认值)|n>
        
        • 如果设为 0,则所有的输出内容为一页,并且当 ISQL_MODE 不等于 2 时,不显示列标题。默认值为 14
      • TIMING

        • 显示每个 SQL 语句花费的执行时间。
        SET TIMING<ON(默认值)|OFF>
        
      • TIME

        • 显示系统的当前时间。
        SET TIME<ON|OFF(默认值)>
        
      • VER[IFY]

        • VER[IFY]是否列出环境变量被替换前、后的控制命令文本。默认值为 ON,表示列出命令文本。
        SET VER[IFY] < ON(默认值)|OFF>
        
        • 示例:1、设置 VER[IFY]为 OFF,不列出命令文本

          在这里插入图片描述

        • 示例:2、设置 VER[IFY]为 ON,列出命令文本

          在这里插入图片描述

      • LONG

        • 设置 BLOB、CLOB、CHAR、VARCHAR、BINARY、VARBINARY、CLASS 等类型一列能显示的最大字节数。
        SET LONG <800(默认值)|n>
        
        • 示例:创建一个表,插入语句,然后使用long参数查看字符串

          在这里插入图片描述

          • 可以看到LONG设置为10时,显示的字符串是被截断了的
      • LINESIZE

        • 设置屏幕上一行显示宽度。
        SET LINESIZE <screen_length(默认值,屏幕宽度)|n>
        
        • 当 ISQL_MODE 取值为 0 或 1 时,LINESIZE 取值范围为自 1 至 32767 的整数。
        • 当 ISQL_MODE 取值为 2 时,LINESIZE 取值范围为自 0 至 32767 的整数,取值为 0 时,表示一行数据在同一行显示。
      • SERVEROUT[PUT]

        • 在块中有打印信息时,是否打印,以及打印的格式。
        SET SERVEROUT[PUT] <ON | OFF(默认值)> [SIZE <20000(默认值)|n>]
        [FOR[MAT] <WRA[PPED] | WOR[D_WRAPPED](默认值) | TRU[NCATED]>]
        
        • 参数说明:

          • ON/OFF:是否打印。
          • SIZE:打印的最大长度。
          • WORD_WRAPPED:按照单词分隔。
          • TRUNCATED:单词被截断。
          • FORMAT:按照服务器返回的显示,不做格式化。
        • 示例:

          在这里插入图片描述

      • SCREENBUFSIZE

        • 设置屏幕缓冲区的长度。用来存储屏幕上显示的内容。单位为字节。
        SET SCREENBUFSIZE<DEFAULT(20M) | n>
        
        • n:有效值范围 1~50M。
      • CHAR_CODE

        • 设置 SQL 语句的编码方式。
        SET CHAR_CODE <GBK | GB18030 | UTF8 | DEFAULT(默认值,操作系统的编码方式)>
        
      • LOCAL_CODE

        • 设置本地编码方式,指定客户端使用的编码格式,会影响结果集和错误信息的编码。
        SET LOCAL_CODE <GBK | GB18030 | UTF8 | DEFAULT(默认值,操作系统的编码方式)>
        
      • CURSOR

        • 设置 DPI 语句句柄中游标的类型。
        SET CURSOR <STATIC | FORWARDONLY (默认值)| DEFAULT>
        
      • AUTOTRACE

        • 设置执行计划和统计信息的跟踪。
        SET AUTOTRACE <OFF(默认值) | NL | INDEX | ON | TRACE | TRACEONLY>
        
        • SET AUTOTRACE OFF 时,停止 AUTOTRACE 功能,常规执行语句。

        • 当 SET AUTOTRACE NL 时,开启 AUTOTRACE 功能,不执行语句,如果执行计划中有嵌套循环操作,那么打印 NEST LOOP 相关操作符的内容。

        • 示例:

          在这里插入图片描述

          • 监控信息项的具体含义:
            • data pages changed : 更改的数据页数
            • undo pages changed : 更改的 UNDO 日志页数
            • logical reads : 逻辑读次数
            • physical reads : 物理读次数
            • redo size : REDO 日志大小
            • bytes sent to client : 发给客户端的数据流量
            • bytes received from client : 客户端接收的数据流量
            • roundtrips to/from client : 客户端与服务器交互次数
            • sorts (memory) : 最优排序次数
            • sorts (disk) : 单路/多路归并排序次数
            • rows processed : DML 操作影响的行数
            • io wait time(ms) : I/O 等待时间
            • exec time(ms) : 执行时间
      • DESCRIBE

        • 设置 DESCRIBE 对象结构信息的显示方式。
        SET DESCRIBE [DEPTH <1(默认值) | n | ALL>] [LINE[NUM] <ON | OFF(默认值)>] [INDENT <ON(默认值) | OFF>]
        
        • 参数说明:
          • DEPTH:结构信息显示至第 N 层,默认只显示第 1 层。取值范围是 1~40。当设置为 ALL 时,DEPTH 为 40。
          • LINENUM:是否显示对象行号,成员显示父亲的行号。
          • INDENT:当对象的类型是复合类型时,是否通过缩进的方式显示成员信息。
      • TRIMS[POOL]

        • 设置 TRIMS[POOL],和 SPOOL 功能结合使用。
        SET TRIMS[POOL] <OFF(默认值) | ON>
        
        • 对于 SPOOL 文件,是否去除输出每行的结尾空格,默认为 OFF。
      • LOBCOMPLETE

        • 设置 LOBCOMPLETE,是否从服务器中全部取出大字段数据。
        SET LOBCOMPLETE <OFF(默认值) | ON>
        
        • 对于大字段数据,是否从服务器全部取出,防止死锁的发生;与显示长度不同,即便是全部取出,也可以只显示一部分。
      • COLSEP

        • 设置列之间的分割符。
        SET COLSEP[text]
        
        • 如果 text 包含空格或标点符号,请用单引号扩起来。默认为一个空格。
      • KEEPDATA

      • 是否为数据对齐进行优化,或者保持数据的原始格式。

      SET KEEPDATA <ON|OFF(默认值)>
      
      • OFF:表示为保证数据的对齐格式,DIsql 对服务器传回的字符串数据,将其中的换行符、TAB 都转换为空格。默认为 OFF。

      • ON:表示关闭对齐优化。

      • AUTORECONN

      • 是否进行自动重新连接。

      SET AUTORECONN <ON(默认值) | OFF>
      
      • 是否进行自动重新连接,设置为 ON 时,使用上次连接的属性设置进行自动重连,默认为 ON。

      • NEST_COMMENT

        • 是否支持多层注释嵌套。Disql 中支持注释,注释必须由起始符号“/* ”开始,由结束符号“*/”结束。
        SET NEST_COMMENT <ON|OFF(默认值)>
        
        • 参数说明:
          • ON:是,支持多层注释。
          • OFF:否,只支持一层注释。默认为 OFF。
      • NULL_ASNULL

        • 在绑定参数输入时,是否将输入的 NULL 当做数据库的 null 处理。ON 是,OFF 否。默认为 OFF。
        SET NULL_ASNULL<ON|OFF(默认值)>
        
        • 参数说明:

          • ON:是。
          • OFF:否。默认为 OFF。
        • 示例:

          在这里插入图片描述

      • CMD_EXEC

        • 是否执行 sql 脚本文件中“/”命令,ON 是,OFF 否。默认为 ON。
        SET CMD_EXEC <ON (默认值)|OFF>
        
      • CHARDEL

        • 设置字符串的限定符。
        SET CHARDEL [text]
        
        • 示例:

          在这里插入图片描述

      • FLOAT_SHOW

      • 设置 FLOAT、DOUBLE 类型数据按科学计数法显示的分界长度。

      SET FLOAT_SHOW <0(默认值)| float_length>
      
      • 当数据直接打印长度超过 float_length 时以科学计数法显示,否则直接显示。

      • 示例:

        在这里插入图片描述

      • CONSOLE_PRINT

        • 控制台是否打印查询结果和执行时间,ON 是,OFF 否。默认为 ON。
        SET CONSOLE_PRINT <ON(默认值)|OFF |OFF_WITH_TIME>
        
        • 参数说明:

          • ON:是,打印执行结果和执行时间。默认为 ON。
          • OFF:否,既不打印执行结果,也不打印执行时间。
          • OFF_WITH_TIME:否,不打印执行结果但是打印执行时间。
          • OFF_WITH_FEEDBACK:否,只打印执行时间和影响行数。
        • 示例:

          在这里插入图片描述

          在这里插入图片描述

          • 关闭之后,不打印任何结果
      • SQLCODE

        • 控制台是否打印 SQLCODE 返回值,ON 是,OFF 否。默认为 OFF。
        SET SQLCODE <ON|OFF(默认值)>
        
        • 示例:

          在这里插入图片描述

          在这里插入图片描述

      • SQL_LINESHOW

        • 输入多行 SQL 语句时,是否打印 SQL 语句的行号,ON 是,OFF 否。默认为 ON。
        SET SQL_LINESHOW <ON(默认值)|OFF>
        
        • 示例:

          在这里插入图片描述

      • NULL_SHOW

        • 空数据是否显示为 NULL,ON 是,OFF 否。默认为 ON。
        SET NULL_SHOW <ON(默认值)|OFF>
        
        • 示例:

          在这里插入图片描述

      • SQLPROMPT

        • 设置 DIsql 命令行的前缀标识
        SET SQLPROMPT <text>
        
        • 为任意的字符串。 中可以包含 DEFINE 变量名。默认则 SQL> 为前缀。

        • 示例:

          在这里插入图片描述

      • ISQL_MODE

        • 结果集打印方式。
        SET ISQL_MODE <0(默认值)|1|2>
        
        • 参数说明:
          • 0:DM 数据库的打印方式。默认为 0。
          • 1:兼容 ORACLE 的打印格式。
          • 2:兼容 Greenplum 的打印格式。
          • 3:兼容 MYSQL 的打印格式,支持在一行 SQL 语句末尾将“\G”或“\g”作为分号使用。其中“\g”和分号等价;“\G”表示结果集按列打印,可以将每个字段打印到单独的行。
      • WRAP

        • 是否折行打印结果集,ON 是,OFF 否。默认为 ON。仅在 ISQL_MODE 为 1 时,该参数有效。
        SET WRAP <ON(默认值)|OFF>
        
        • 示例:设置 ISQL_MODE 为 1,LINESIZE 为 10

          在这里插入图片描述

      • CTRL_INFO

        • 设置 DIsql 的回显打印信息。
        SET CTRL_INFO <0(默认值)|1|2|4|8>
        
        • 参数说明:
          • 0:没有特殊设置。默认为 0。
          • 1:控制-E 不强制关闭行号、执行时间以及执行号等信息的展示。
          • 2:控制 DIsql 的回显信息按 5 列打印,具体如下:
            • 第 1 列:语句的 SQL 类型,如:DELETE、UPDATE、SELECT 等;
            • 第 2 列:语句的执行结果,执行成功则为 0,执行失败则为错误码;
            • 第 3 列:语句的影响行数,DDL 和 PLsql 类型语句的影响行数均默认为 0,仅 DELETE、 UPDATE、SELECT 类型语句存在具体的影响行数;
            • 第 4 列:语句的执行时间;
            • 第 5 列:语句执行失败时的错误信息,若语句执行成功,则不打印该列。
          • 4:控制语句块多个结果集全部自动显示,不需要通过 more 命令显示结果集。
          • 8:控制执行脚本文件时,不忽略 SQL 之间的空行。
      • RETRY_CONN

        • 设置 DIsql 尝试自动重连的次数。
        SET RETRY_CONN <0(默认值)|n>
        
      • RETRY_CONN_TIME

        • 用于当 RETRY_CONN 为 n 时,设置 DIsql 自动重连的时间间隔。
        SET RETRY_CONN_TIME <0(默认值)|n>
        
      • ROWS

        • 设置结果集最大显示行数。
        SET ROWS <0(默认值)|n>
        
        • 结果集最多显示 n 行,设置为 0 表示不限制结果集最大显示行数。
      • EXPLAIN_MODE

        • 设置 SQL 执行方式。
        SET EXPLAIN_MODE < 0|1|2 >
        
        • 参数说明:

          • 0:默认值。正常执行 SQL 语句。
          • 1:按照 EXPLAIN FOR 方式执行,即在 SQL 语句前自动拼接上 EXPLAIN FOR 之后再执行。
          • 2:按 EXPLAIN 方式执行,即在 SQL 语句前自动拼接上 EXPLAIN 之后再执行。
        • 示例:按照 EXPLAIN_MODE 为 2 的方式执行

          在这里插入图片描述

      • PREFIX_STR

        • 设置 SQL 语句拼接前缀,在待执行的 SQL 语句前拼上指定字符再发给服务器执行。
        SET PREFIX_STR < 0| text >
        
        • 参数说明:
          • 0:默认值,不加前缀。
          • text:SQL 语句的拼接前缀。前缀必须是注释的形式:/***xxx***/。其他形式将报错。
      • READ_ONLY

        • 设置会话只读,默认为 OFF。
        SET READ_ONLY <ON|OFF(默认值) >
        
    • SHOW命令查看环境变量

      • 查看当前环境变量

        • 语法:

          SHOW <system_variable>{<system_variable>}
          
          • <system_variable>:环境变量。
        • 示例:

          在这里插入图片描述

      • 显示初始化参数

        • 语法:

          SHOW PARAMETER[S] [<parameter_name>]
          
          • <parameter_name>:包含在初始化参数名中的字符串。
        • 示例:

          在这里插入图片描述

    • 使用配置文件设置环境变量

      • DIsql 在连接成功数据库时会自动运行两个配置文件 glogin.sql 和 login.sql。
      • glogin.sql 文件中的设置永久生效,需要用户自行创建在DM_HOME/bin/disql_conf路径下
      • glogin.sql 文件和 login.sql 文件的执行顺序如下:
        1. 默认在 $DM_HOME/bin/disql_conf 路径下查找 glogin.sql 文件并执行;
        2. 默认在当前工作目录下(注意不是 DIsql 工具所在的目录,而是启动 DIsql 时所在的目录)查找 login.sql 文件并执行,若未找到则执行步骤 3;
        3. 判断操作系统是否配置了 DM_SQLPATH 环境变量,如果配置了该变量则在对应路径下查找 login.sql 文件并执行。
  • DIsql常用命令

    • 帮助HELP

      • DIsql 帮助命令,可以帮助用户查看其他命令的具体用法。概括为:

        • 命令的标题
        • 命令的文本描述
        • 命令的简写(例如,AUTO 可以代替 AUTOCOMMIT)
        • 可以向命令传递的强制参数和可选参数
      • 语法:

        HELP|? [topic]
        
        • topic:命令名称或者命令名称的首字母,查询某一命令用法或者某一字母开头的所有命令用法。
      • 示例:

        在这里插入图片描述

    • 输出文件SPOOL

      • 将查询结果输出到指定文件。

      • 语法:

        SPOOL {<file> | OFF }
        
        <file>::= <file_path> [CRE[ATE]|REP[LACE]|APP[END]][NO_PRINT]
        
        • 参数说明:

          • <file_path>:指定文件的绝对路径
          • CRE[ATE]:创建指定的文件,若指定的文件已存在,则报错,默认方式
          • REP[LACE]:创建指定的文件,若指定的文件已存在,则替换它
          • APP[END]:将输出内容追加到指定文件的末尾
          • NO_PRINT:控制台不打印查询结果
          • OFF:关闭 SPOOL 输出

          注意:

          只有SPOOL OFF之后,才能在输出文件中看到输出的内容。

    • 切换到操作系统命令HOST

      • 使用 HOST 命令可以不用退出 DIsql 就能执行操作系统命令。

      • 语法(添加了HOST后面就可以跟cmd的命令了):

        HOST[<command>]
        
      • 示例:

        在这里插入图片描述

    • 获取对象结构信息DESCRIBE

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

      • 语法:

        DESC[RIBE] [<模式名>.]<对象名>
        
        • 各对象获取的内容略有不同:
          • 表或视图获取的内容包括列名,列数据类型,列是否可以取空值。

          • 函数、过程、类获取的内容包括两类:

            1. 存储函数/过程名,类型(函数或过程),函数返回值类型;
            2. 参数名,参数数据类型、参数输入输出属性、参数默认值。
          • 包获取的内容分为两类:

            1. 包内存储函数/过程名,类型(函数或过程),函数返回值类型;
            2. 包内参数名,参数数据类型、参数输入输出属性、参数默认值。
          • 记录获取的内容为:参数名,参数数据类型,参数是否可以取空值。

        注意

        当仅声明了包或自定义类型中的过程或函数,但包还未创建包主体或自定义类型还未创建类型体时,对包或自定义类型使用 DESC 会报错,此时不能使用 DESC。

      • 示例:获取表 sysgrants 的结构描述

        在这里插入图片描述

    • 管理本地变量DEFINT、COLUMN和UNDEFINT

      定义本地变量的命令有 DEFINE 和 COLUMN。删除本地变量的命令是 UNDEFINE。

      • DEFINT

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

        • 语法:

          DEF[INE] [<VARIABLE=text>|< VARIABLE >]
          
          • 参数说明:
            • DEF[INE] VARIABLE = text:申明一个变量,如果该变量存在,则重新赋值,否则新生成一个变量,并进行赋值。
            • DEF[INE] VARIABLE:如果该变量存在,则输出特定 VARIABLE 的值和类型,否则报错。
            • DEF[INE]:输出 DIsql 中所有的变量的值和类型。
        • 示例:

          在这里插入图片描述

      • COLUMN

        • 定义一个本地列或表达式。

        • 语法:

          COL[UMN] [<column | expr> [<option>]] 
          <option> ::=	NEW_VALUE variable |
          				FOR[MAT] <format>
          <format> ::=	An | an | <fmt>
          
          • 参数说明:
            • COL[UMN]:列举出所有的 COLUMN 变量信息。
            • COL[UMN] column | expr:列举出某个 column 或 expr,如果存在,则输出信息,否则报错。
            • COL[UMN] column | expr option:option 目前仅支持 NEW_VALUE 和 FORMAT。
            • NEW_VALUE:表示该 column|expr 的值同时作为变量 variable 存在。但如果该变量未赋值,通过 DEFINE 查询时,不会显示该变量。查询结果的最后一个值赋给变量 variable。
            • FOR[MAT]:表示该 column|expr 的列打印格式。
      • UNDEFINT

        • 删除一个或多个本地变量,此变量可以是 DEFINE 定义生成的本地变量,也可以是 COLUMN 关联的本地变量。

        • 语法:

          UNDEF[INE] <变量子句>
          <变量子句>::=<变量名>{ <变量名>}
          
      • ACCEPT

        • 从命令行读取内容,将其赋值给变量。

        • 语法:

          ACC[EPT] <变量名> [<变量类型>] [FOR[MAT] <format>] [DEF[AULT] <默认值>] [<前导字符串>] [HIDE]
          
          <变量类型>::= NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE
          
          <前导字符串>::= PROMPT <字符串值>|
          
                        NOPR[OMPT]
          
          • 参数说明:
            • < 变量名 >:用于指定存储读取内容的变量名。最大长度为 30 个字符,如果变量不存在则新加一个变量。
            • < 变量类型 >:变量的类型,支持 NUMBER、CHAR、DATE、FLOAT 和 DOUBLE。默认为 CHAR。
            • FOR[MAT] *<*format>:指定输入内容的格式,如果输入内容不满足指定格式报错重新输入。
            • DEF[AULT] < 默认值 >:指定变量的默认值。< 默认值 > 必须满足 FORAMT 格式,如果命令行没有输入内容,则给变量赋值 < 默认值 >。
            • < 前导字符串 >:PROMPT 指定前导字符串。NOPR[OMPT]指定不用前导字符串。默认为不指定。
            • HIDE:用于指定将输入内容隐藏。默认则不隐藏。
        • 示例:

          在这里插入图片描述

    • 查看执行计划EXPLAIN

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

      • 语法:

        EXPLAIN <sql_clause>
        
      • 示例:

        在这里插入图片描述

    • 设置异常处理方式WHENEVER

      • 用 whenever 命令可以设置异常处理方式,继续执行或退出 DIsql。

      • 语法:

        WHENEVER SQLERROR
        
        CONTINUE [ COMMIT | ROLLBACK | NONE ] |
        
        EXIT [ SUCCESS | FAILURE | WARNING | n | <variable> | : <bindvariable> ]
        
        [ COMMIT | ROLLBACK ]
        
        • n 和的返回值受限于操作系统,在不同平台下,会有所不同
    • 查看下一个结果集MORE

      • 当结果集过多,屏幕只能显示一个时,用户可以使用 MORE 命令切换到下一个结果集。

      • 语法:

        MORE | MR
        
    • 显示SQL语句或块信息LIST

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

      • 语法:

        L[IST] [n | n m | n  * | n LAST | * | * n | * LAST | LAST] 或者;
        
        • 参数说明:
          • n ,m :数值 SQL 行号。
          • *: 当前行号。
          • LAST: 最后一行。
    • 插入大对象数据

      • 当插入语句中包含大对象数据文件时,使用 @。

      • 语法:

        @<插入语句>
        
        • 大数据的插入值格式为:@'path'
    • 缓存清理CLEAR

      • 清理指定操作本地缓存。

      • 语法:

        CL[EAR] <option>
        
        <option> ::= [COL[UMNS] | SQL | SCR[EEN] | BUFF[ER]]
        
        • 参数说明:
          • COL[UMNS]:清理所有的 COLUMN 变量信息。
          • SQL:清理本地 SQL 缓存信息。
          • SCR[EEN]:清理 DIsql 终端屏幕信息。
          • BUFF[ER]:同 SQL 功能一样,清理本地 SQL 缓存信息。
  • 在DIsql中使用脚本

    • 编写脚本

      • 一个简单的脚本例子,在文本中编写脚本并保存为 C:\test.sql,内容如下:

        drop table t01;
        
        create table t01(c1 varchar(100), c2 varchar(100));
        
        begin
        
        for i in 1..10 loop
        
        insert into t01 values('a'||i, 'b'||i);
        
        end loop;
        
        end;
        
        /
        
    • 使用START命令运行脚本

      • 语法:

        <start>::=<`运行脚本>|<start 运行脚本>|<直接执行语句>
        <`运行脚本>::=`<file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
        <start 运行脚本>::=START <file_path> [<PARAMETER_VALUE>{ <PARAMETER_VALUE>}]
        <直接执行语句>::= -E "<SQL语句>{;<SQL语句>}"
        
        • 参数说明:
          • <file_path>:脚本的绝对路径。
          • <PARAMETER_VALUE>:传递进入脚本的参数值。

        注意

        <运行脚本>中的符号位于键盘第二排左起第一个。如果在LINUX环境下使用<运行脚本>,则符号需要加\或’进行转义。例如:./disql SYSDBA/SYSDBA`/dev/test.sql

      • 启动DIsql时,运行脚本

        SQL>start C:\test.sql
        或
        SQL>`C:\test.sql
        

        在这里插入图片描述

    • 使用EDIT命令编写脚本

      • DIsql 中使用 EDIT 命令来编辑指定的脚本文件。

      • 语法:

        ED[IT][<file_name>] 
        
        • <file_name>:指定待编辑的脚本文件。如果指定文件不存在,则创建该文件。
    • 在脚本中使用变量

      • DIsql 在命令中遇到替换变量时,用真实值去代替,相当于 c 语言中的宏定义。真实值来源于三个地方:

        1. 脚本参数带入
        2. 脚本中直接定义
        3. 用户动态输入
      • 脚本带参数值

        脚本带参数值,参数名必须是数字。

        • 变量名是数字:在脚本中通过&n 来引用参数,n 为 1 表示为第一个参数,2 表示第二个参数,依次类推。

          • 例:有表test,其建表和初始化数据如下:

            create table test(id int) ;
            
            insert into test values(11) ;
            
            insert into test values(12) ;
            
            insert into test values(15) ;
            
          • 脚本C:\test.sql如下:

            select * from test where id = &1;
            
            select * from test where id = &2;
            
            select * from test where id = &3;
            
            • 此时使用脚本时后面必须携带三个参数与变量一一对应
      • 参数书写要求

        • 因为参数是原样替换,因此如果 SQL 语句中字符串要求用单引号,那么定义的参数值也应该包含单引号;另外如果字符串中有特殊字符,需要使用双引号将整个字符串作为一个整体
        • 如果参数值是数字,写法没有特殊要求。
        • 如果参数值是字符串,应该用单引号扩起,如果字符串有空格,应该在单引号外面,再加上一个双引号扩起。
    • 脚本中定义参数值

      • 使用 DEFINE 命令定义变量值,格式:DEFINE 标识符 = 值。

      • 举例:脚本C:\rtest.sql

        define n=1 
        
        define s=DIsql
        
        select &n from dual; 
        
        select '&s' from dual;
        
    • 接收用户交互式输入参数值

      • 需要的条件:
        • 运行脚本时不带参数
        • 脚本中不定义参数
    • 使用PROMPT命令传递信息

      • PROMPT 命令会在屏幕上输出一行信息。这非常有助于在存储脚本中向用户传送信息。

      • 语法:

        PROMPT <输出内容>
        

总结

  • 本章主要是讲解DIsql工具的使用。DM数据库提供该工具用于命令行交互,不仅可以使用命令行方式查看相关配置信息,也可以直接执行SQL语句和操作系统命令,为用户也提供了方便(有些确实使用命令行习惯)

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值