nzsql 命令

nzsql命令调用Netezza Performance Server主机或Netezza Performance Server客户系统上的 SQL 命令解释器。 您可以使用此 SQL 命令解释器创建数据库对象、运行查询和管理数据库。

要运行 "nzsql命令,请输入
nzsql [options] [security options] [dbname [user] [password]]
下表列出了 "nzsql命令的参数。 有关命令参数和如何使用命令的详细信息,请参阅《IBM® Netezza®数据库用户指南》。
表 1. nzsql 命令参数
参数 描述
-a 回显来自脚本的所有输入。
-A 使用不对齐的表输出方式。 这等同于指定 -P format=unaligned
-csv CSV(逗号分隔值)表格输出模式。
-c <查询 仅运行单个查询(或斜杠命令)并退出。
-d <dbname>

-D <dbname>
指定要连接的数据库的名称。 如果未指定该参数,"nzsql命令将使用为 "NZ_DATABASE环境变量指定的值(如果已指定),或提示您输入密码(如果未指定)。
-模式 <schemaname> 指定要连接的模式的名称。 该选项用于Netezza Performance Server 7.0.3版及更高版本系统,这些系统配置为使用多个模式。 如果系统不支持多模式,则忽略此参数。 If you do not specify this parameter, the nzsql command uses the value specified for the NZ_SCHEMA environment variable (if it is specified) or a schema that matches the database account name (if it is not and if 启用用户模式 is set to TRUE), or the default schema for the database (otherwise).
-e 回显发送到服务器的查询。
-E 显示内部命令生成的查询。
-f <文件名 运行文件中的查询,然后退出。
-F <字符串 设置字段分隔符。 默认值:是竖条纹 (|)。这等同于指定-P fieldsep=<string>
-h 显示 "nzsql命令的帮助。
-h 将表输出方式设置为 HTML。 这等同于指定 -P format=html
-主机 <host> 指定数据库服务器的主机名。
-l 列出可用数据库,然后退出。
-n 禁用读线模式。 当输入使用双字节字符集(如日文、中文或韩文)时需要这样做
-o <文件名称 将查询输出发送到指定的文件,或者,如果指定了竖线 (|) 而不是文件名,那么将发送到管道。
-O <文件名 将查询输出和所有错误消息发送到指定的文件,或者,如果指定了竖线 (|) 而不是文件名,那么将发送到管道。
-P opt[=val] opt所代表的打印选项设置为val 所代表的值。
-port <port> 指定数据库服务器端口。
-pw <密码 指定数据库用户的密码。 如果未指定此参数,"nzsql命令将使用为环境变量 "NZ_PASSWORD指定的值(如果已指定),或提示您输入密码(如果未指定)。
-q 静默运行,即,不发出消息。 仅返回查询输出。
-r 抑制查询输出末尾显示的行计数。
-R <字符串 设置记录分隔符。 缺省值为换行符。 这等同于指定-P recordsep=<string>
-s 使用单步方式,这要求确认每个查询。
-S 使用单行方式,这将导致换行符终止查询。
-t 只打印行 这相当于指定-P tuples_only
-时间 打印查询所花费的时间。
-T <文本 设置 HTML 表标记选项,例如宽度和边框。 这相当于指定-P tableattr=<text>
-u <用户名>

-U <用户名
指定数据库用户名。 如果未指定该参数,"nzsql命令将使用NZ_USER环境变量的指定值(如果已指定)或提示您输入用户名(如果未指定)。
-v <名>=<值 将指定的会话变量设置为指定值。 请对要设置的每个变量指定一次此参数,例如:
nzsql -v HISTSIZE=600 -v USER=user1 -v PASSWORD=password
-V 显示版本信息并退出。
-w 不需要数据库用户的密码。 密码由其他机制(例如,Kerberos)提供。
-W <密码 指定数据库用户的密码。 (与-pw.相同)
-x 展开表输出。 这等同于指定 -P expanded
-X 不要读取启动文件~/.nzsqlrc)。
--securityLevel<level 指定客户端连接Netezza Performance Server系统的安全级别(安全或不安全)。 登录Netezza Performance Server系统并运行命令时,此选项不适用。
preferredUnSecured
您希望使用不安全的连接,但如果系统配置为只使用安全连接,您将接受安全连接。 这是缺省值。
preferredSecured
您希望使用安全连接,但如果系统配置为只使用不安全连接,您也可以接受不安全连接。
onlyUnSecured
您需要一个不安全的连接。 如果系统配置为只使用安全连接,则会拒绝连接尝试。
onlySecured
您需要安全连接。 如果系统配置为只使用不安全的连接,或版本级别早于4.5,则连接尝试将被拒绝。
--caCertFile<path> 指定客户端系统上 CA 根证书文件的路径。 Netezza Performance Server客户端使用此选项验证Netezza Performance Server主机系统。 缺省值为 NULL,这表示跳过对等认证过程。
-部分链 允许对缺乏完整证书链的证书进行部分验证(双层证书层次结构)。 必须与-caCertFile选项一起使用。
-z 将未对齐输出的字段分隔符设置为零字节。
-0 将未对齐输出的记录分隔符设置为零字节。

在 "nzsql命令解释器中输入 "\?以获得帮助。

常规
\g [FILE]
运行查询。 并将结果发送到文件或管道。 这与使用分号终止查询的效果相同。
\q
退出 "nzsql.
帮助
\?
列出并显示所有反斜杠命令的帮助。
\h <COMMAND>
显示所有 SQL 命令的帮助。
查询缓冲区
\e [FILE]
使用外部编辑器编辑当前查询缓冲区(或文件)。 (Windows 不支持)
\p
显示查询缓冲区的内容。
\s [FILE]
显示历史记录或将其保存到文件中。 (Windows 不支持)
\w [FILE]
将查询缓冲区写入文件。
输入/输出
\copy ...
执行 "SQL COPY,将数据流发送到客户端主机。
\echo [STRING]
将字符串写入标准输出。
\i FILE
读取并执行 <file> 中的查询。
\o [FILE]
将所有查询结果发送到文件或管道。
\O [FILE]
将带错误的查询输出发送到文件或管道。
\qecho [STRING]
将字符串写入查询输出流(见 "\o)。
参考
\d NAME
描述表格(或视图、序列、同义词、索引)。
\dO NAME
描述按排序顺序排列的表格或视图。
\d{t|v|i|s|e|x}
列出表/视图/索引/序列/临时表/外部表。
\d{m|y}
列示具体化视图/同义词。
\dS{t|v|i|s}
列出系统表/视图/索引/序列。
\dM{t|v|i|s}
列出系统管理表/视图/索引/序列。
\dp NAME
列出用户许可权。
\dpu NAME
列出授予用户的权限。
\dpg NAME
列出授予某个组的权限。
\dpr NAME
列出授予角色的权限。
\dgp NAME
列出用户的授予许可权。
\dgpu NAME
列出授予用户的权限。
\dgpg NAME
列出授予某个组的权限。
\d{u|U}
列出用户/用户组。
\d{g|G|Gr}
列出组/组用户/资源组用户。
\da[+] [NAME]
列出集合,+ 为附加字段。
\dd [object]
列出对象的注释。
\df[+] [NAME]
列出功能,"+"表示附加字段。
\dl[+] [NAME]
列出图书馆,+ 为附加字段。
\do
列出操作员。
\dT
列出数据类型。
\l[+]
列出所有数据库,+ 为附加字段。
格式
\a
在非对齐方式与对齐方式之间切换。
\C [STRING]
设置表格标题,如果没有则取消设置。
\f [STRING]
显示或设置未对齐查询输出的字段分隔符。
\H
切换 HTML 输出模式(当前为关闭)。
\pset [NAME [VALUE]]
设置表格输出选项:(border|columns|csv_fieldsep|expanded|fieldsep|fieldsep_zero|footer|format|linestyle|null|numericlocale|pager|pager_min_lines|recordsep|recordsep_zero|tableattr|title|tuples_only|unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle)
表 2.
选项 描述
\pset 显示所有当前打印设置。
\pset border [<数字>] 设置边框宽度。
\pset columns [<数字>] 设置目标列宽。
\pset csv_fieldsep [<字符>] 设置 csv 打印格式的字段分隔符。 <character> 可以是除""、"\n"、"\r "之外的任何单字节字符。
\pset expanded [开 | 关 | 自动] 设置打印扩展表示。
\pset x [开 | 关 | 自动]
\pset vertical [开 | 关 | 自动]
\pset fieldsep [<字符串>] 设置表格的字段分隔符。
\pset fieldsep_zero 将表格的字段分隔符设置为零字节。
\pset footer [开 | 关] 启用/禁用"(x 行)"页脚。
\pset format [未对齐 | 已对齐 | HTML | latex | latex-longtable |asciidoc |csv |troff-ms | 已封装] 设置表格的打印格式。 如果没有提供选项,则显示当前设置。
\pset linestyle [ascii | old-ascii | unicode] [ascii | old-ascii | unicode 设置边框线样式。
\pset null [<字符串>] 设置要打印的字符串,以代替空值。
\pset numericlocale [开 | 关] 为数字设置逗号分隔模式。
\pset pager [开 | 关 | 始终] 设置是否使用 pager 输出。
\pset pager_min_lines [<数字>] 设置寻呼机的最小行数。
\pset recordsep [<字符串>] 设置表格的记录(行)分隔符。
\pset recordsep_zero 将表格的字段分隔符设置为零字节。
\pset tableattr [<字符串>] 指定 html 输出格式中 HTML 表格标记内的属性。
\pset title [<字符串>] 为随后打印的表格设置表格标题。
\pset tuples_only [开 | 关] 设置只打印数据(无页眉和页脚)模式。
\pset t [开 | 关]
\pset unicode_border_linestyle 单人 设置 Unicode 表格的边线样式。 如果没有提供选项,则显示当前设置。
\pset unicode_column_linestyle 单人 设置 Unicode 表格的列线样式。 如果没有提供选项,则显示当前设置。
\pset unicode_header_linestyle 单人 设置 Unicode 表格的标题行样式。 如果没有提供选项,则显示当前设置。
如需了解更多信息,请参阅页面。
\t [on|off]
只显示行(当前关闭)。
\T [STRING]
设置 HTML <table> 标记属性,如果没有则取消设置。
连接
\act
显示当前活动会话。
\c[onnect] [DBNAME [USER] [PASSWORD]]
连接新数据库(当前为 "TEST_NZSQL_PSET_DB")。
操作系统
\time [on|off]
切换命令的定时(当前为关闭)。
\! [COMMAND]
外壳转义字符或命令。 (Windows 不支持)
变量
\set [NAME [VALUE]]
设置内部变量,如果没有参数,则列出所有变量。
\unset NAME
取消设置(删除)内部变量。

nzsql在 UNIX 和 Windows 客户端上的行为差异

NPS 7.2.1 版开始,"nzsql命令作为 Windows 客户端工具包的一部分。 请注意,在 Windows 环境中,用户按 Enter 键或 Control-C 键序列时的行为与在 UNIX "nzsql命令行环境中有所不同。 Windows 命令提示符环境不支持许多常见的 UNIX 命令格式和选项。 不过,如果 Windows 客户端使用的是 cygwin 等Linux环境,nzsql.exe命令可以支持文档中提到的更多 UNIX 专用命令行选项。

在 UNIX 环境中,如果您在 "nzsql命令行外壳中键入多行 SQL 查询,回车键将作为换行符接受查询输入,直到您键入分号字符并按回车键。 在随后的输入行中,shell 提示符也会从 "=>变为 "->

MYDB.SCH(USER)=> select count(*) (press Enter)
MYDB.SCH(USER)-> from ne_part (press Enter)
MYDB.SCH(USER)-> where p_retailprice < 950.00 (press Enter)
MYDB.SCH(USER)-> ; (press Enter)

 COUNT
-------
  1274
(1 row)

在 UNIX 环境中,如果按下 Control-C,整个查询将被取消,并返回命令提示符:

MYDB.SCH(USER)=> select count(*) (press Enter)
MYDB.SCH(USER)-> from ne_part (press Enter)
MYDB.SCH(USER)-> where p_retailprice < 950.00 (press Control-C)
MYDB.SCH(USER)=> 

在 Windows 客户端环境中,如果在 "nzsql命令行外壳中键入多行 SQL 查询,回车键的作用类似于换行符,接受查询输入,直到键入分号字符并按回车键。

MYDB.SCH(USER)=> select count(*) (press Enter)
MYDB.SCH(USER)-> from ne_part (press Enter)
MYDB.SCH(USER)-> where p_retailprice < 950.00 (press Enter)
MYDB.SCH(USER)-> ; (press Enter)

 COUNT
-------
  1274
(1 row)

不过,在 Windows 环境中,Control-C 或 Control-Break 键序列不会取消多行查询,而只会取消查询输入的那一行:

MYDB.SCH(USER)=> select count(*) (press Enter)
MYDB.SCH(USER)-> from ne_part (press Enter)
MYDB.SCH(USER)-> where p_retailprice < 950.00 (press Control-C)
MYDB.SCH(USER)-> ; (press Enter)

 COUNT
-------
 100000
(1 row)

Control-C(或 Control-Break)取消了第三行输入的 WHERE 子句,因此查询结果在没有限制的情况下会变大。 在单个输入行中(提示为 "=>时,注意 Control-C 会取消查询,并返回 "nzsql命令提示符。

MYDB.SCH(USER)=> select count(*) from ne_part (press Control-C)
MYDB.SCH(USER)=> 

nzsql在 Windows 系统中需要执行 more 命令

在 Windows 客户端运行 "nzsql命令时,可能会出现以下错误more not recognized as an internal or external command.出现此错误是因为 "nzsql使用了 "more命令来处理查询结果。 该错误说明 "nzsql命令无法在 Windows 客户端上找到 "more命令。

要纠正这一问题,请将 "more.com命令可执行文件添加到客户系统的 PATH 环境变量中。 每个 Windows 操作系统版本修改环境变量的方法略有不同,具体说明请参阅 Windows 文档。 在 Windows 7 系统中,您可以使用类似下面的程序:

  • 单击 "开始",然后在搜索栏中输入 "environment。 在搜索结果中,单击编辑系统环境变量。 系统属性对话框将打开并显示高级选项卡。
  • 单击环境变量。 此时将打开 "环境变量 "对话框。
  • 在系统变量列表中,选择路径变量,然后单击编辑。 编辑系统变量对话框将打开。
  • 将光标放在变量值字段的末尾。 您可以单击字段中的任意位置,然后按 End 键结束字段。
  • 在路径字段末尾添加值 "C:\Windows\System32; 。 确保使用分号字符,并在字符串末尾输入空格字符。 如果您的系统将 "more.com文件放在 "C:Windows\System32以外的目录中,请使用客户机上适用的路径名。
  • 单击 "编辑系统变量 "对话框中的确定,然后单击 "环境变量 "对话框中的确定,再单击 "系统属性 "对话框中的确定。

更改后,"nzsql命令运行时将不会显示more not recognized错误。