dbsql 命令

dbsql 命令调用 Db2® SQL 命令解释器。

可以从已安装 IBM® Db2 Warehouse on Cloud 支持工具的远程系统运行此命令。根据数据库用户帐户特权,您可使用 SQL 命令解释器来运行查询和/或执行管理操作,例如创建和删除对象以及管理数据库。

基本命令语法如下所示:
dbsql [options] [security options]
如果您使用的是 IBM Db2 Warehouse,那么运行该命令的方式取决于您获取 Db2 支持工具的位置。有关如何运行该命令的信息,请参阅:Db2 支持工具概述
注: 对于 IBM Db2 Warehouse,以 root 用户身份运行 dbsql 时,或使用 docker exec -it Db2wh dbsql 时,您必须提供容器文件系统中的绝对文件路径,如以下示例所示:
dbsql -f /mnt/clusterfs/scratch/query.sql 
如果直接从 docker exec ... 命令调用查询,那么以下规则适用:
  • 使用单引号对括住查询的双引号进行转义,如以下示例所示:
    docker exec -it Db2wh dbsql ... -c '"SELECT * FROM test_table"'
    注: 仅当使用产品容器时,此限制才适用。在客户机容器中,不需要将查询括在单引号内。
  • 如果查询同时包含单引号和双引号,请使用反斜杠 (\) 对双引号进行转义,如以下示例所示:
    docker exec -it Db2wh dbsql ... -c '"CREATE' SCHEMA '\"MixedCase'\''WithQuotes\""'
  • 如果查询包含必须保留的单引号,请将该查询括在双引号内,如以下示例所示:
    docker exec -it Db2wh dbsql ... -c "\"INSERT INTO dbsql_tbl VALUES(1, 'aaaaa');\""
    另外,还必须对双引号进行转义,如第二个项目符号所述。
下表描述 dbsql 命令选项。
表 1. dbsql 命令选项
选项 描述
-a 回显来自脚本的所有输入。
-A 使用不对齐的表输出方式。这等同于指定 -P format=unaligned
-c <query> 仅运行单个查询(或斜杠命令)并退出。如果直接从命令行调用查询,那么必须将该查询括在双引号内。
-d <dbname>
或者
-D <dbname>
指定要连接的数据库的名称。如果未指定此参数,那么 dbsql 命令会提示您指定数据库。缺省数据库名称为 $DB_DATABASE
-schema <schemaname> 指定要连接的模式的名称。如果未指定此参数,那么 dbsql 命令将使用缺省模式,即,与数据库用户名匹配的模式。缺省模式名称为 $DB_SCHEMA
-e 回显发送到服务器的查询。
-E 显示内部命令所生成的查询。
-f <file name> 运行所指定文件中的查询,然后退出。
对于 Db2 Warehouse,必须指定可从容器内访问的绝对路径。示例如下:
dbsql -f /mnt/clusterfs/scratch/query.sql 
-F <string> 设置字段分隔符。缺省值:竖线 (|)。这等同于指定 -P fieldsep=<string>

对于任何二进制字符、控制字符或不可打印的字符,请使用美元符号 ($) 字符作为值的前缀。例如,对于“制表符”值,请指定 dbsql -F $'\t'

-h(或 -?--help 显示 dbsql 命令的帮助。
-host <host>-h <host> 指定数据库服务器的主机名。缺省值为域套接字。
-H 将表输出方式设置为 HTML。这等同于指定 -P format=html
-l 列出可用的数据库,然后退出。
-n 禁止逐行读取。当 dbsql 与日语、中文或韩国语之类的输入方法配合使用时,此参数为必需。
-o <filename> 将查询输出发送到指定的文件,或者,如果指定了竖线 (|) 而不是文件名,那么将发送到管道。
-O <filename> 将查询输出和所有错误消息发送到指定的文件,或者,如果指定了竖线 (|) 而不是文件名,那么将发送到管道。
-port | -p <port> 指定数据库服务器端口。这不能是为其配置了 SSL 的端口。缺省值为 hardwired。
-P var[=arg] var 所表示的打印选项设置为 arg 所表示的值。var 选项包括下列各项:
fieldsep=string
设置字段分隔符。缺省值为竖线 (|)。
recordsep=string
设置记录分隔符。缺省值为换行符。
border=value
设置 HTML 表边框大小。
expanded
展开表输出。
tuples_only
仅打印行。
title=string
设置 HTML 表标题。
tableattr=text
设置 HTML 表标记选项,例如宽度和边框。
null=string
将指定的字符串显示为 null 值。
format=format
请指定 unaligned 以使用不对齐的表输出方式,指定 html 以使用 HTML 表输出方式,或指定 latex 以使用 LaTeX 格式。
-pw <password> 指定数据库用户的密码。如果未指定此参数,那么 dbsql 命令会提示您输入密码。
-q 静默运行,即,不发出消息。仅返回查询输出。
-r 抑制缺省情况下显示在查询输出末尾的行计数。
-R <string> 设置记录分隔符。缺省值为换行符。这等同于指定 -P recordsep=<string>
-rev-Rev 显示软件版本信息并退出。
-s 使用单步方式,这要求确认每个查询。
-S 使用单行方式,这将导致换行符终止查询。
-t 仅打印行。这等同于指定 -P tuples_only
-terminator <char> 将 SQL 查询终止符设置为指定的字符,缺省值为 ';'
-time 打印完成查询所耗用的时间。
-T <text> 设置 HTML 表标记选项,例如宽度和边框。这等同于指定 -P tableattr=<text>
-u <username>
或者
-U <username>
指定数据库用户名。如果未指定此参数,那么 dbsql 命令会提示您输入用户名。缺省用户名是 $DB_USER
注: 对于 Db2 Warehouse,以 root 用户身份或通过使用 docker exec -it Db2wh dbsql 运行 dbsql 时,用户名参数区分大小写。
-v <name>=<value> 将指定的 dbsql 会话变量设置为指定的值。请对要设置的每个变量指定一次此参数,例如:
dbsql -v HISTSIZE=600 -v USER=user1 -v PASSWORD=password
-V 显示版本信息并退出。
-w 不需要数据库用户的密码。密码由其他机制(例如,Kerberos)提供。
-W <password>-pw <password> 指定数据库用户的密码。
-x 启用展开的表输出。这等同于指定 -P expanded
-X 不读取启动文件 (~/.dbsqlrc)。
-securityLevel <level> Db2 环境不支持此选项。
-caCertFile <path> Db2 环境不支持此选项。
以下示例显示用于打开 dbsql 命令解释器的命令:
dbsql -d bludb -schema ap_region -u admin1 -pw mypassword 
Welcome to dbsql, an interactive SQL terminal.

Type:  \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit 
BLUDB.AP_REGION(ADMIN1)=>
对于 Db2 Warehouse,root 用户还可以从映像容器主机的命令行发出以下等同命令:
docker exec -it Db2wh dbsql -d bludb -schema ap_region -u admin1 -pw mypassword 
Welcome to dbsql, an interactive SQL terminal.

Type:  \? for help on internal slash commands
       \g or terminate with semicolon to execute query
       \q to quit 
BLUDB.AP_REGION(ADMIN1)=>

dbsql 交互命令终端内,可以指定一些内部命令以执行各种任务。这些选项称为斜杠选项,因为每个选项前都有一个反斜杠 (\)。有关斜杠命令的更多信息,请参阅:dbsql 内部斜杠命令