IBM® DB2® Universal Database™(UDB)命令行处理器(CLP)是用于访问 DB2 函数的方便接口。本文将研究 CLP 进行操作的三种模式,获得 db2 命令的详细说明,还将了解一些肯定让命令行用户感到高兴的最新可用性改进。另外,对于那些喜欢使用图形工具的用户,可以参考 Command Editor 概述。
DB2 UDB 命令行处理器(CLP)是一个接口,通过这个接口可以方便地访问 DB2 UDB 函数。CLP 接受来自 DB2 命令行的命令或 SQL 语句。在基于 Linux 和 UNIX® 的系统中,这个命令行是 DB2 实例的命令行。在 Windows® 操作系统中,它是启用了 CLP 命令窗口的命令行;在这种情况下,必须先(从普通命令窗口)运行 db2cmd 命令来启动 DB2 命令行环境。
db2 命令可以启动命令行处理器。CLP 包括前端进程(表示用户界面)和后端进程,可以用它们来维护数据库连接。每次 db2 调用都启动新的前端进程;第一次 db2 调用要启动后端进程。拥有相同父进程的所有前端进程都是由一个后端进程提供服务的,因此它们共享一个数据库连接。QUIT 命令停止命令行处理器,但是不删除关联的后端进程;要删除关联的后端进程,需要发出 TERMINATE 命令。建议在停止实例(STOP DATABASE MANAGER 或 db2stop)之前执行 TERMINATE 命令;否则,后端进程会保持一个不再可用的实例连接(Attachment)。
可以用下列三种模式之一启动 CLP:
db2start |
elk /home/melnyk>db2 |
!db2start; |
图 1 显示了完整的 db2 命令语法。选项包括用来配置 CLP 会话的一个或多个选项标记的规范(表 1)、要执行的 DB2 命令或 SQL 语句、一般 CLP 帮助请求(?),或者与特定命令相关的帮助文本(? phrase)、SQLCODE(? message)、SQLSTATE(? sqlstate)或类代码(? class-code);有关类代码的详细信息,请参阅 SQLSTATE Messages)。您还可以请求 CLP 选项的当前设置(? options),或者请求关于阅读在线帮助语法表的信息(? help)。下例说明了其中一些选项:
db2 -tvf myscript.db2 => option flags |
下面是需要记住的与 db2 命令有关的其他一些要点:
db2 "? sql0510" | more |
db2 -r mydata\orglist.txt "select * from org" |
db2 select * from employee where edlevel > 18 |
db2 "select * from employee where edlevel > 18" |
db2 update database configuration using mirrorlogpath NULL |
| 选项 | 描述(默认) | |
| -a | 显示 SQLCA 数据。(OFF) | |
| -c | 自动提交 SQL 语句。(ON) | |
| -e{c|s} | 将 SQLCODE 或 SQLSTATE 数据写入标准输出。(OFF) | |
| -f filename | 接受指定文件(命令脚本)中的输入。如果其他选项与 -f 选项一起指定,必须最后指定 -f 选项。(OFF) | |
| -l filename | 将日志记录写入指定文件。该文件包含已执行命令和语句的历史记录。如果该文件已经存在,则新的信息会添加在该文件的后面。如果其他选项与 -l 选项一起指定,必须最后指定 -l 选项。(OFF) | |
| -n | 保留分隔符号内换行字符前的所有尾部空格字符。例如:
-n 选项必须与 -t 选项一起使用。(OFF) | |
| -o | 将数据和消息都写入标准输出。(ON) | |
| -p | 处于 CLP 交互模式下时显示提示符。(ON) | |
| -r filename | 将 输出(消息和错误代码除外)重定向到指定的文件。如果该文件已经存在,则将新的消息添加到文件的后面。如果 -a 选项与 -r 选项一起指定,那么将 SQLCA 数据也写入文件中。-r 选项不影响 -e 选项。如果指定了 -e 选项,那么 SQLCODE 或 SQLSTATE 数据被写入标准输出,而不是被写入文件中。(OFF) | |
| -s | 如果执行命令脚本时或在处于 CLP 交互模式下时发生错误,那么可以使用这个选项停止处理;将错误消息写入标准输出。如果禁用该选项,则会显示错误消息,并继续执行剩余命令或语句;只有发生系统错误时才停止执行。(OFF) | |
| -t | 使用分号(;)作为语句终止符号。该选项禁用反斜线(\)行连续字符。(OFF) | |
| -tdx | 使用 x 作为语句终止字符。(OFF) | |
| -v | 将输入文本回送到标准输出。(OFF) | |
| -w | 显示 SQL 语句警告消息。(ON) | |
| -x | 返回没有任何标题(包括列名)的数据。(OFF) | |
| -z filename | 将 所有输出(包括任何消息或错误代码)重定向到指定的文件。如果该文件已经存在,则将新的信息添加到文件的后面。如果 -a 选项与 -z 选项一起指定,那么还要将 SQLCA 数据也写入文件中。-z 选项不影响 -e 选项。如果指定了 -e 选项,那么要将 SQLCODE 或 SQLSTATE 数据写入标准输出,而不是写入文件中。(OFF) |
CLP 选项通常可以以任何顺序和组合来指定。要开启选项,则需要在相应的选项字符前加上减号(例如,-f)。要关闭选项,则需要在选项字母前加上加号,或者在选项字母两边分别加上减号(例如,+c 等于 -c-;关于要自动提交 SQL 语句这种情况的例子,请参阅 Enhanced Savepoints)。
可以使用 LIST COMMAND OPTIONS 命令查看 CLP 选项的当前设置。通过发出 UPDATE COMMAND OPTIONS 命令,可以在 CLP 交互输入模式或批处理模式下更改这些设置。例如:
db2 => update command options using c off p off |
还可以使用 DB2OPTIONS 注册变量设置会话的 CLP 选项。例如:
export DB2OPTIONS='+c -p-' => Linux and UNIX-based systems |
DB2 UDB Version 8.1 引入了针对 DB2 CLP 的一些易用性方面的重要改进。现在可以对在交互模式下使用 CLP 时出现的提示符进行定制。还可以使用新的命令缓存来运行以前执行的命令,或者使用操作系统的集成命令编辑器或选择的编辑器来编辑那些命令。
定制的 CLP 提示符可以显示当前用户、实例连接或数据库连接。要定义命令提示符,则需要设置新的名为 DB2_CLPPROMPT 的 DB2 UDB 注册变量。DB2_CLPPROMPT 注册变量可以设置为任何文本字符串,最大长度为 100 个字符。定制的字符串可以包含任意符号,在运行的时候,实际值将替代这些符号。侧栏中描述了可以设置的符号。
清单 1 显示了如何使用 db2set 命令设置 DB2_CLPPROMPT 注册变量的值。(等号两旁一定不要有空格!)在通过发出 db2 命令调用 CLP 交互模式时,得到的命令提示符会反映所进行的更改。并且一旦建立了数据库连接,定制的提示符还会显示所连接数据库的别名。要更改定制的提示符,可以退出 CLP 交互模式(发出 QUIT 命令),然后再次发出 db2set 命令,并指定不同的字符串。在本例中,使用换行字符符号生成了一种“多行”提示符。
|
|
对于 CLP 交互运行时环境,DB2 UDB Version 8 还包括一些有用的命令缓存。这项功能允许恢复(查看、编辑或运行)交互会话过程中输入的任何命令。
新的 HISTORY 命令允许访问此缓存的内容,对于历史记录中的每个命令,返回内容时都要带上序号;这些序号显示了命令运行的顺序。最近运行的命令列在最后。如果想按倒序列 出命令,HISTORY 命令允许指定 REVERSE 关键字。默认情况下,命令缓存最多存放当前交互 CLP 会话过程中运行的二十个命令。命令历史记录不会在会话与会话之间持续;会话结束时,缓存就会被清除,这通常发生在运行 QUIT 命令之后。如果启动两个单独的交互 CLP 会话,每个会话的命令历史记录都存储在单独的缓存中。
具有命令缓存的真正好处在于可以使用新的 RUNCMD(或 R)命令执行缓存中的任何命令。不仅可以执行命令,而且可以使用 EDIT(或 E)命令自由编辑缓存的命令,然后以几乎无缝的操作顺序来运行该命令,这有时称为“往返编辑”。
RUNCMD 和 EDIT 都允许指定命令序号来标识要编辑或运行的缓存命令。如果不指定序号,那么系统会检索最近运行的命令。
清单 2 说明了这项功能。该清单延续清单 1 的结尾;开始先对随 DB2 UDB 提供的 SAMPLE 数据库中的 ORG 表运行简单的 SELECT 语句。随后的 HISTORY 命令调用显示了到目前为止该会话中已运行的三个命令或语句:CONNECT、SELECT 和 HISTORY。我们将调用 EDIT 命令,并在顺序中指定语句序号 2,通过这些操作给上面的 SELECT 语句添加 WHERE 子句。在这个运行于 AIX 系统中的例子中,我们还明确指定 vi 编辑器。还可以省去任选的 EDITOR 子句,例如,将 DB2_CLP_EDITOR 注册变量的值设置为“vi”:
db2set db2_clp_editor="vi"因为已经选择关闭编辑器时保存更改,所以更新的语句会出现在交互 CLP 提示符之后,我们可以选择立即执行该语句。再次调用 HISTORY 命令来显示缓存中现在有 5 个命令,包括修改的 SELECT 语句。
|
DB2 UDB 提供了示例 CLP 脚本,可以对随 DB2 提供的 SAMPLE 数据库运行这些脚本。在基于 Linux 和 UNIX 的系统中,这些脚本位于 /sqllib/samples/clp 目录中;在 Windows 操作系统中,它们则位于 \SQLLIB\samples\clp 目录中。同时提供的 README 文件描述了命令脚本以及如何运行它们。有关最新的示例更新信息,请参阅 Sample Programs。
Command Editor (前身为 Command Center) 是 CLP 的图形用户界面(GUI)。它以记事本方式显示,可以通过从 Windows Start 菜单(Start → Programs → IBM DB2 → Command Line Tools → Command Editor)发出 db2ce 命令打开它,或者从 Control Center 的工具栏(图 2)打开它。
一 打开 Command Editor,可以立即在 Commands 页面中输入信息(图 3)。然后可以开始将文本输入(或将文本粘贴到)Command Input 窗口中,确保每个命令或 SQL 语句以语句分隔符号结束。默认语句分隔符为分号,也可以被修改。还可以从文件系统或从 Task Center 导入以前保存的脚本(Selected → Open)。在准备好运行命令或 SQL 语句时,可以单击 Execute 按钮。
如果选择了目标数据库,Command Editor 记事本的 Query Results 和 Access Plan 页面变为可用状态。Query Results 页面允许查看和处理单个 SQL 查询的结果。还可以更改字段的值,或在该页面中删除或插入整行,然后提交或回滚恢复所进行的更改!运行这样的查询后,Command Output 窗口(Commands 页面的下面部分)将回送该查询,并显示查询状态。Access Plan 页面提供可解释 SQL 语句(如 SELECT、INSERT 或 UPDATE)的访问计划(访问所请求数据的操作顺序)的图形表示。
可以通过选择 Selected → History,或通过单击 History 图标
,来检索命令历史记录。如果在 Command History 窗口中选择的命令或 SQL 语句特别长,且在 Commands 面板中被截断,则完整的命令或语句会显示在 Details 面板中(图 4)。
用 图 3 或图 4 中的 SQL 语句将创建一个 SQL 过程,这是主体用 SQL 编写的存储过程。SQL 过程是定义较复杂的查询或任务的一种有用方法,这些查询或任务可以在需要时随时调用。例如,如果名为 createSQLproc.db2 的 CLP 脚本中包含这个语句,则可以通过发出下列命令创建这个过程:
db2 connect to sample |
图 5 显示了如何使用 Command Editor 调用这个存储过程,使用的配额值为 25。
您可能还想将这个过程保存为脚本,以便以后运行,或者计划定期运行。可以通过将语句保存到文件系统或 Task Center 中做到这一点(Selected → Save;参见图 6)。
在这里,打开 Task Center 的最简单方法是单击 Command Editor 工具栏中的 Task Center 图标
。
SALES STATUS 显示在任务列表中(图 7)。右击此任务或打开 Selected 下拉菜单会提供可能运行操作的列表,其中包括现在运行任务(图 8)或计划以后运行任务的操作。
一旦任务已经运行,便可以通过右击任务或打开 Selected 下拉菜单,然后选择 Show Results 操作,来检查执行结果。如果有执行和脚本的详细信息,那么打开的 Show Results 记事本中会提供这些信息(图 9)。
我 们已经看到 DB2 UDB 命令行处理器是用于访问 DB2 函数的方便且通用的接口。DB2 CLP 可以从 DB2 命令行调用、通过命令脚本调用,甚至通过图形用户界面来调用。文中使用了许多例子来说明根据偏好使用和定制 CLP 的不垃圾广告法。我希望您进一步进行研究,开发自己的脚本,以此作为增进对 DB2 的理解以及有效管理数据库的一种方式。
Roman B. Melnyk 博士是 DB2 信息开发团队的高级成员,其专长是数据库管理、DB2 实用程序和 SQL。在 IBM 任职的十年多的时间里,Roman 撰写了大量 DB2 书籍、文章和其他相关材料。他还与别人合著了 DB2 Version 8: The Official Guide(Prentice Hall Professional Technical Reference,2003 年)、DB2: The Complete Reference(Osborne/McGraw-Hill,2001 年)、DB2 Fundamentals Certification for Dummies(Hungry Minds,2001 年)和 DB2 for Dummies(IDG Books,2000 年)。 | ||
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15082138/viewspace-539563/ ,如需转载,请注明出处,否则将追究法律责任。