神通数据库交互式工具isql介绍

0    226    1

👉 本文共约4708个字,系统预计阅读时间或需18分钟。

概述

神通数据库中运行 SQL 命令的命令行工具主要是 isql。isql 以神通数据库为终端,能提供在远程运行环境中执行向数据库服务器发送 SQL 命令、查看 SQL 执行计划命令、查看 SQL 执行统计信息命令等功能。同时。它提供了一些元命令和多种类似 shell 的特性来实现书写脚本以及对大量任务的自动化。

启动选项

启动 isql 的语法
isql [isql_option]
isql_option 可选参数如下
参数:-a
描述:在读取行时向标准输出打印所有内容。这个选项在脚本处理时比交互模式时更有用。这个选项等效于设置 ECHO 变量为 all。
参数:-A
描述:切换为非对齐输出模式。缺省输出模式是对齐的。
参数:-c command
描述:声明 isql 将执行一条查询字符串 command ,然后退出。这一点在 shell 脚本里很有用。
参数:-C connect_timeout
描述:指定 ISQL 工具连接数据库后台的超时时间,单位秒 (s)。
参数:-d dbname
描述:声明想要连接的数据库名称。等效于在命令行上把 dbname 声明为第一个非选项参数。
参数:-e
描述:把所有发送给服务器的查询同时也回显到标准输出。等效于把变量 ECHO 设置为 queries。
参数:-E
描述:回显由 \d 和其它反斜杠命令生成的实际查询。
参数:-f filename
描述:使用 filename 作为命令的语句源而不是交互式读入查询。ISQL 将在处理完文件后结束。这个选
项在很多方面等效于内部命令 \i。
参数:-F separator
描述:使用 separator 作为未对齐输出的域分隔符。
参数:-h hostname
描述:指定正在运行服务器的主机名。如果主机名以斜杠开头,则它被用作到 Unix 域套接字的路径。
参数:-H
描述:打开 HTML 格式输出。
参数:-l
描述:列出所有可用的数据库,然后退出。其它非连接选项将被忽略。类似于内部命令 \list。
参数:-L filename
描述:除了正常的输出源之外,把所有查询输出记录到文件 filename。
参数:-n
描述禁用命令行快速编辑功能。
参数:-o filename
描述:将所有查询输出重定向到文件 filename 。这个选项等效于 \o 命令。
参数:-p port
描述:指定服务器侦听的 TCP 端口或本地 Unix 域套接字文件的扩展。
参数:-q
描述:安静地执行处理任务。缺省时 ISQL 将打印欢迎和许多其它输出信息。如果使用了此选项,这些都不会出现。这在和 -c 选项一起使用时很有效。在 isql 里可以通过设置 QUIET 变量实现同样效果。
参数:-R separator
描述:使用 separator 做为非对齐输出的记录分隔符。
参数:-s
描述:单步模式运行。意味着每个查询在发往服务器之前都要提示用户,用这个选项也可以取消执行。
此选项主要用于调试脚本。
参数:-S
描述:单行运行模式,这时每个命令都将由换行符结束,像分号那样。
参数:-t
描述:关闭打印列名称和结果行计数脚注等信息。等效于 \t 命令。参数:-T table_options
描述:允许你声明放在 HTML table 标签里的选项。
参数:-U username
描述:以用户 username 代替缺省用户与数据库连接。
参数:-v assignment
描述:像内部命令 set 那样进行一次变量分配。
参数:-V
描述:打印 isql 版本信息然后退出。
参数:-W
描述:强制 ISQL 在与一个数据库连接前提示输入口令。
参数:-x
描述:打开扩展表格式模式。等效于 \x 命令。
参数:-X
描述:不读取启动文件。
参数:-?
描述:help

内部命令

在 ISQL 启动后,可在 ISQL 中输入以下命令获得相关信息。
CLEAR
命令: CLEAR
描述: 重置 (清理) 查询缓冲区。
语法: CLEAR
CONNECT
命令: CONNECT
描述: 连接到新的数据库。
语法: CONN[ECT] [USERNAME [/PASSWORD] ]
COPYRIGHT
命令: COPYRIGHT
描述: 显示 OSCAR 用法和发布信息。
语法: COPYRIGHTDEFINE
命令: DEFINE
描述: 改变内部变量值或新定义变量,如果没有参数就列出所有变量。已有变量请参考高级属性中的变量小节。
语法: DEFINE [NAME [VALUE]]
DESCRIBE
命令: DESCRIBE
描述: 描述表/索引/序列/视图。
语法: DESCRIBE NAME
DISPLAY
命令: DISPLAY
描述: 显示当前查询缓冲区的内容。
语法: DISPLAY
ECHO
命令: ECHO
描述: 向标准输出写出文本。
语法: ECHO [STRING]
EXIT
命令: EXIT
描述: 退出 ISQL。
语法: EXIT
HELP
命令: HELP
描述: SQL 命令的语法帮助, 用 可以看所有命令的帮助。
语法: HELP [NAME]
HISTORY
命令: HISTORY
描述: 打印历史或者将其保存到文件。
语法: HISTORY [FILENAME]
LIST AGGREGATE
命令: LIST AGGREGATE描述: 列出所有匹配 pattern(一个正则表达式) 的聚集函数,如果没有 pattern 参数,列出所有的聚集
函数。
语法: LIST AGGREGATE [PATTERN]
LIST COMMENT
命令: LIST COMMENT
描述: 列出所有匹配 pattern(一个正则表达式) 的对象的注释,
语法: LIST COMMENT [PATTERN]
LIST DATABASE
命令: LIST DATABASE
描述: 列出所有数据库。
语法: LIST DATABASE
LIST DOMAIN
命令: LIST DOMAIN
描述: 列出所有匹配 pattern(一个正则表达式) 的域 (继承类型),如果没有 pattern 参数,列出所有域。
语法: LIST DOMAIN [PATTERN]
LIST FUNC
命令: LIST FUNC
描述: 列出所有匹配 pattern(一个正则表达式) 的函数,如果没有 pattern 参数,列出所有函数。
语法: LIST FUNC [PATTERN]
LIST INDEX
命令: LIST INDEX
描述: 列出所有匹配 pattern(一个正则表达式) 的索引,如果没有 pattern 参数,列出所有索引。
语法: LIST INDEX [PATTERN]
LIST OPERATOR
命令: LIST OPERATOR
描述: 列出所有匹配 pattern(一个正则表达式) 的操作符,如果没有 pattern 参数,列出所有操作符。
语法: LIST OPERATOR [PATTERN]
LIST PROCEDURE
命令: LIST PROCEDURE
描述: (NULL)
语法: LIST PROCEDURE
LIST RIGHT命令: LIST RIGHT
描述: 列出所有匹配 pattern(一个正则表达式) 的表的访问权限,如果没有 pattern 参数,列出所有表
的访问权限。
语法: LIST RIGHT [PATTERN]
LIST SEQUENCE
命令: LIST SEQUENCE
描述: 列出所有匹配 pattern(一个正则表达式) 的序列,如果没有 pattern 参数,列出所有序列。
语法: LIST SEQUENCE [PATTERN]
LIST SYSTEM
命令: LIST SYSTEM
描述: 列出所有匹配 pattern(一个正则表达式) 的系统对象,
语法: LIST SYSTEM [PATTERN]
LIST TABLE
命令: LIST TABLE
描述: 列出所有匹配 pattern(一个正则表达式) 的表,如果没有 pattern 参数,列出所有表。
语法: LIST TABLE [PATTERN]
LIST TYPE
命令: LIST TYPE
描述: 列出所有匹配 pattern(一个正则表达式) 的数据类型,如果没有 pattern 参数,列出所有数据类
型。
语法: LIST TYPE [PATTERN]
LIST USER
命令: LIST USER
描述: 列出所有匹配 pattern(一个正则表达式) 的数据库用户,如果没有 pattern 参数,列出所有用户。
语法: LIST USER [PATTERN]
LIST VIEW
命令: LIST VIEW
描述: 列出所有匹配 pattern(一个正则表达式) 的视图,如果没有 pattern 参数,列出所有视图。
语法: LIST VIEW [PATTERN]
QECHO
命令: QECHO
描述: 向查询输出流写出文本 (见 SPOOL)。语法: QECHO [STRING]
RUN
命令: RUN
描述: 向服务器发送 SQL 命令并且把结果写到文件或者管道,如果没有给出参数,则写到标准输出。
语法: RUN [FILENAME]
SAVE
命令: SAVE
描述: 将当前查询缓冲区写出到文件。
语法: SAVE FILENAME
SPOOL
命令: SPOOL
描述: 向文件或者管道发送以后所有的查询结果。
语法: SPOOL FILENAME
TIMING
命令: TIMING
描述: 查询计时开关切换。
语法: TIMING
SET TIMING
命令: SET TIMING
描述: 设置计时开关状态。
语法: SET TIMING ON SET TIMING OFF
SET TIME
命令: SET TIME
描述: 设置计时开关状态。
语法: SET TIME ON SET TIME OFF
SET AUTOTRACE
命令: SET AUTOTRACE
描述: 设置自动查询计划开关状态。
语法: SET AUTOTRACE ON SET AUTOTRACE OFF
SET GROUPCOUNT
命令: SET GROUPCOUNT
描述: 设置批量打印行数,值为 0 或大于等于 10 的整数,0 表示不分批。语法: SET GROUPCOUNT [GROUPCOUNT]
START
命令: START
描述: 执行指定文件中的 SQL 命令。
语法: START FILENAME
UNDEFINE
命令: UNDEFINE
描述: 取消定义内部变量。
语法: UNDEFINE NAME
\i or \include
命令:\i or \include
描述:从文件中读取输入并执行它。注意:文件路径使用’/’ 而不是‘\’。
语法:\i filename or \include filename
\l or \list
命令:\l or \list
描述:列出所有可用的数据库。
语法:\l or \list
\o or \out
命令:\o or \out
描述:将查询结果保存到文件。注意:文件路径使用’/’ 而不是‘\’。
语法:\o filename or \out filename
\t
命令:\t
描述:关闭打印列名称和结果行计数脚注等信息。
语法:\t
\x
命令:\x
描述:打开扩展表格式模式。
语法:\x
?
命令: ?
描述: 指定的内部命令的语法帮助, 如果不指定参数,则显示所有的内部命令列表。语法: ? [TOPIC]
!
命令: !
描述: 在 shell 里执行命令或者开始一个交互的 shell。
语法: ! [COMMAND]
SQL 执行信息查看
要查看执行计划就在执行语句前加 EXPLAIN 关键字,例如:
EXPLAIN select
from test;
--QUERY PLAN
--Seq Scan on TEST (cost=0.00..89.92 rows=8192 width=4)
有关 EXPLAIN 的详细信息请参见《神通数据库 SQL 语言参考手册》中的 SQL 命令类表章节的
EXPLAIN 部分。
统计信息的操作请参考 CREATE STATISTICS、ALTERSTATISTICS、RESTATISTICS、UPDATE
STATISTICS、DROP STATISTICS 命 令,统 计 信 息 的 查 询 请 见 系 统 表 sys_statistics 或 系 统 视 图
v_sys_index_statistics 及 v_sys_statistics。

高级特性

变量
以下变量只可以通过 define 命令设置,但不能通过 undefine 的命令删除。
format: 输出格式为 unaligned,aligned,html,latex。
unaligned: (不对齐)把一条记录的所有字段都输出到一行,用当前有效的
域分隔符分隔。
aligned:(对齐)格式化后的文本输出。
html 和 latex: 模式把表输出为对应的标记语言。
border: 值必须是一个数字,这个参数与实际的输出格式有关。 在 html 模式里,这
个参数会直接翻译成 border=... 属性。在其他的模式里,表现为 0(无边界),1
(内部分隔线),和 2(表框架)。
expanded: 正常和扩展格式之间切换。当打开扩展格式时,查询结果用两列显示,字段名称在左,数据在右。
fieldsep: 声明在非对齐模式时的域分隔符。
recordsep: 声明在非对齐模式时的记录分隔符。缺省是换行符。
tuples_only: 完全显示和记录显示之间切换。完全显示将显示列头,标题和各种脚注等信息。记录显示只显示实际的表数据。pager: isql 输出的分页器。如果设置了环境变量 PAGER,输出被定向到指定程序,否则使用系统缺省(比如 more)。
define: 变量引用标识符,默认标识符为”&”。on 为开启变量定义功能;off 为关闭变量定义功能。单个 (非数字和字母) 字符为设置变量引用标识符。
concat: 连接标识符,默认标识符为”.”。on 为开启连接标识符功能;off 为关闭连接标识符功能。
单个 (非数字和字母) 字符为设置连接标识符。
escape: 转义标识符,默认标识符为”“。on 为开启转义标识符功能;off 为关闭转义标识符功能。
单个 (非数字和字母) 字符为设置转义标识符。
以下变量既可以通过 define 命令设置又可以通过 undefine 命令删除。
AUTOCOMMIT: 如果是 on(缺省),那么每个 SQL 命令都在成功完成后自动提交。如果是
off,SQL 命令不会提交,直到你明确地发出 COMMIT。
ENCODING: 当前的客户端字符集编码。
PORT: 当前你正在联接的数据库服务器的端口。
HOST: 当前数据库服务器主机。
DBNAME: 当前的数据库名称。
USER: 当前的数据库用户。
LASTOID: 最后影响的 oid 值,即为从一条 INSERT 命令返回的值。此变量只保证在下一条
SQL 命令的结果显示之前有效。

字符集编码

isql 提供了字符集转换功能,用户可使用该功能将后台的数据转换成自己所需编码的数据。
设 置 客 户 端 字 符 集 有 两 种 形 式,

  1. 获 取 系 统 字 符 集;
  2. 本 地 字 符 集 环 境 变 量 (NLS_OSCAR_LANG)
    下面介绍两种形式的设置方式

WINDOWS 平台

1、修改系统字符集:默认字符集编码是 GBK,如果需要修改编码方式,可参考Windows 系统字符集设置
2、添加 NLS_OSCAR_LANG:
我的电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量,点击新建,变量名中输入:NLS_OSCAR_LANG,变量值输入:GBK 或者 UTF-8,根据不同情况而定;
或者打开命令行窗口,在命令行中输入”set NLS_OSCAR_LANG = GBK” 或者”set
NLS_OSCAR_LANG = UTF-8”, 回车即可,注意这次修改只对该窗口有效。

LINUX 平台

1、修改系统变量(LANG): 一般 LINUX 平台下的默认字符集是 UTF-8,如果需要
修改编码方式为其它编码 (如 GBK),只需要打开终端窗口,在窗口中输入 “export
LANG=zh_CN.GBK” 即可,注意这次修改只对该窗口有效。2、 添 加 NLS_OSCAR_LANG: 神 通 数 据 库 本 地 字 符 集 环 境 变 量 (NLS_OSCAR_LANG), 设置方式和上面的方式一样,如果需要修改字符集编码方式为 GBK, 在终端窗口中输入”export NLS_OSCAR_LANG=zh_CN.GBK” 即可。在部分的国产平台操作系统上,发现通过修改系统变量 (LANG) 来进行编码方式的转换
后,获取的数据还是乱码,可尝试设置该变量进行修复。
Note: NLS_OSCAR_LANG 的作用域是所有驱动,例如 ACI、ODBC 也会获取该变量,如将该变量设置成系统级别的变量,需谨慎考虑会不会影响到其它驱动。

命令行编辑

↑ 和 ↓ 键可以快速输入历史命令。
TAB 键可以快速补全命令(windwos 除外),若想禁用 TAB 键的补全功能,可在启动 isql 时使用 -n参数,
也可在启动 isql 前编辑(创建)/etc 路径下的 inputrc 文件并键入以下内容::

isql 通过 readline 库提供的快速编辑功能实现此特性,若想了解更多请参考 readline 库的官方文档。

    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    3 × 5 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部