这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

元命令

在 vsql 中输入的任何以不带引号的反斜杠开头的命令称为 vsql 元命令,这种命令由 vsql 本身进行处理。这些命令可使 vsql 更有助于进行管理或脚本编写。元命令的更常用叫法是斜杠命令或反斜杠命令。

vsql 命令的格式是反斜杠的后面依次紧跟命令动词和任何参数。参数和命令动词用任意数量的空格字符分隔,并且各个参数用任意数量的空格字符分隔。

若要在参数中包含空格,您可以用单引号将该参数括起来。若要在参数中包含单引号,请在该参数前面附加反斜杠。此外,包含在单引号中的任何内容需要进行类 C 替换,以替代 \n(换行符)、\t(制表符)、\\数字\0数字\0x数字(带有给定十进制、八进制或十六进制代码的字符)。

如果不带引号的参数以冒号 (:) 开头,则该参数会被视为 vsql 变量,并且变量的值会改为用作参数。

用反引号 (```) 括起来的实参会被视为一个命令行并传递到 shell。命令的输出(移除了任何尾随换行符)会被视为参数值。以上转义序列在反引号中也适用。

有些命令使用 SQL 标识符(例如表名称)作为参数。这些实参遵循 SQL 的语法规则:不带引号的字母会强制转换为小写,而双引号 (") 可防止对字母进行大小写转换并允许在标识符中包含空格。在双引号中,成对的双引号在生成的名称中会减少为单个双引号。例如,FOO"BAR"BAZ 会解释为 fooBARbaz,而 "A weird"" name" 将变为 A weird" name

当出现其他不带引号的反斜杠时,对参数进行的解析将停止。此不带引号的反斜杠会被视为新的元命令的开头。特殊序列 \\(两个反斜杠)标记参数的结尾,并继续解析 SQL 命令(如果有)。这样,您可以随意地在单个行中将 SQL 命令和 vsql 命令一起使用。但在任何情况下,元命令的参数都不能超过行的结尾。

1 - 元命令快速参考

2 - \connect

以指定用户 user‑name 身份建立与数据库 db 的连接。上一个连接将关闭。如果您不指定数据库名称,Vertica 将连接到当前数据库。如果您不指定用户名实参,Vertica 将假定为当前用户。

语法

\c[connect] [db [user‑name]]

错误处理

阻止执行的错误包括:指定未知用户和拒绝访问指定数据库。Vertica 以不同方式处理错误,具体取决于此命令是在 vsql 中还是在脚本中交互执行:

  • VSQL 处理:当前连接保持不变。

  • 脚本:处理立即停止并显示错误。这可以防止脚本作用于错误的数据库。

3 - \d 元命令

Vertica 支持许多 \d 命令,这些命令返回有关不同类别的数据库对象的信息。有关完整列表,请参阅下面的 \d 参考

语法

除非另有说明,否则 \d 命令通常遵循以下语法:

\dCommand [ [schema.]pattern ]

参数

您可以为大多数 \d 命令提供字符串模式实参,用于筛选命令返回的结果。该模式可以选择由架构名称限定。

架构
对大多数 \d 命令有效,将输出仅限制为 schema 中的数据库对象。例如,以下 \dp 命令获取包含字符串 resource 的所有 V_MONITOR 表的权限信息:
=> \dp V_MONITOR.*resource*
                Access privileges for database "dbadmin"
 Grantee | Grantor | Privileges |  Schema   |            Name
---------+---------+------------+-----------+----------------------------
 public  | dbadmin | SELECT     | v_monitor | resource_rejections
 public  | dbadmin | SELECT     | v_monitor | disk_resource_rejections
 public  | dbadmin | SELECT     | v_monitor | resource_usage
 public  | dbadmin | SELECT     | v_monitor | resource_acquisitions
 public  | dbadmin | SELECT     | v_monitor | resource_rejection_details
 public  | dbadmin | SELECT     | v_monitor | resource_pool_move
 public  | dbadmin | SELECT     | v_monitor | host_resources
 public  | dbadmin | SELECT     | v_monitor | node_resources
 public  | dbadmin | SELECT     | v_monitor | resource_queues
 public  | dbadmin | SELECT     | v_monitor | resource_pool_status
(10 rows)
  
模式
仅返回与指定字符串匹配的数据库对象。模式字符串可以包含以下通配符:
  • * (星号):零个或多个字符。

  • ? (问号):任何单个字符。

例如,以下 \dt 命令返回以字符串 store 开头的表:

=> \dt store*
                     List of tables
 Schema |       Name        | Kind  |  Owner  | Comment
--------+-------------------+-------+---------+---------
 public | store_orders      | table | dbadmin |
 public | store_orders_2018 | table | dbadmin |
 public | store_overseas    | table | dbadmin |
 store  | store_dimension   | table | dbadmin |
 store  | store_orders_fact | table | dbadmin |
 store  | store_sales_fact  | table | dbadmin |
(6 rows)
  

\d 参考

\d
如果不由模式实参限定,则返回所有表及其架构名称、所有者和注释。如果由模式实参限定,则 \d 返回所有匹配的表和每个表中的所有列,以及每个列的详细信息,例如数据类型、大小和默认值。
\df
返回所有函数名称、函数返回数据类型和函数实参数据类型。此元命令还会返回用户可用的所有过程的过程名称和参数。
\dj
返回所有投影,并显示架构、投影名称、所有者和节点。返回的行包括超投影、实时聚合投影、Top-K 投影和带表达式的投影。
\dn
返回架构名称和架构所有者。
\dp
返回系统表 V_CATALOG.GRANTS 中所有对象的权限摘要:被授予者、授予者、权限、架构和对象名称(相当于 \z)。
\dS
如果不由模式实参限定,则返回所有 V_CATALOGV_MONITOR 系统表。要仅获取一个架构的系统表,请使用架构名称限定命令,如下所示:
\dS { V_CATALOG | V_MONITOR }.*
\ds
返回序列及其参数。
\dT
返回 Vertica 支持的所有数据类型。
\dt
如果不由模式实参限定,则返回与未限定 \d 命令相同的信息。如果由模式实参限定,则 \dt 返回与未限定 \dt 命令具有相同详细级别的匹配表。
\dtv
返回表和视图。
\du
返回数据库用户以及他们是否是超级用户。
\dv
如果不由模式实参限定,则返回所有视图及其架构名称、所有者和注释。如果由模式实参限定,\dv 返回所有匹配的视图和每个视图中的列,以及每列的数据类型和大小。

4 - \edit

使用外部编辑器编辑查询缓冲区(或指定的文件)。当编辑器退出时,其内容会复制回查询缓冲区。如果未指定任何参数,则当前的查询缓冲区会复制到临时文件,然后以相同方式编辑该临时文件。

然后,将按照 vsql 的一般规则重新解析新的查询缓冲区,按照这些规则,包括第一个分号在内的整个缓冲区会被视为单个行。(因此,您无法使脚本以这种方式工作。请使用 \i 获取该结果。)如果没有任何分号,vsql 将等待用户输入分号(它不会执行查询缓冲区)。

语法

\e[dit] [ file ]

5 - \i

R从指定的文件读取并执行输入。

语法

\i filename

示例

Linux 上的 Vertica vsql 客户端支持反引号(反撇号)扩展。例如:

  1. 将环境变量设置为包含要运行的脚本的路径:

    $ export MYSCRIPTS=/home/dbadmin/testscripts
    
  2. 发出 vsql 命令。

    $ vsql
    
  3. 使用反引号扩展来包含运行现有脚本的路径,例如 sample.sql

    => \i `echo $MYSCRIPTS/sample.sql`
    

6 - \locale

显示或设置当前会话的区域设置。

语法

\locale [locale-identifier]

参数

locale-identifier
指定要使用的 ICU 区域设置标识符,默认设置为:
en_US@collation=binary

如果设置为空字符串,Vertica 会将区域设置设置为 en_US_POSIX

如果省略此实参,则 \locale 返回当前区域设置。

有关标识符选项的详细信息,请参阅关于区域设置。有关区域设置标识符的完整列表,请参阅 ICU 项目

示例

查看当前的区域设置:

=> \locale
en_US@collation=binary

更改此会话的默认区域设置:

=> \locale en_GBINFO:
INFO 2567:  Canonical locale: 'en_GBINFO:'
Standard collation: 'LEN'
English (GBINFO:)

注意

服务器区域设置仅影响服务器端查询处理的排序行为。客户端应用程序负责确保所设置的区域设置正确无误,以便正确显示字符。以下是 Vertica 推荐的最佳实践,可确保结果可预测:

  • 应将 vsql 的终端模拟器 (POSIX) 中的区域设置设置为与服务器端 (ICU) 上设置的会话区域设置相同,以便在服务器上正确整理数据并在客户端上正确显示数据。

  • 应在终端模拟器中使用 POSIX LANG 环境变量来设置 vsql 区域设置。有关如何设置区域设置,请参阅终端模拟器的文档。

  • 服务器会话区域设置应使用 为数据库指定默认区域设置 中所述的设置进行设置。

  • vsql 的所有输入数据应该为 UTF-8,而所有输出数据都以 UTF-8 进行编码。

  • 不支持非 UTF-8 编码和关联的区域设置值。

7 - \pset

设置一些选项来控制 Vertica 如何设置查询结果输出格式。

语法

\pset output-option

输出选项

format format‑option
设置输出格式,其中 format‑option 是以下项之一:
  • u[naligned] 将每一行的所有列数据写入一行,其中每个字段仅由当前分隔符分隔。将此输出用作其他程序的输入,例如用于 CSV 输入的逗号分隔字段。

  • a[ligned] (默认值):呈现按列对齐的输出。

  • h[tml]:将 HTML 标记中的输出呈现为表。

  • l[atex]:在 LaTex 标记中呈现输出。

border int
仅当输出格式设置为 html 时有效,指定表边框,其中 int 指定边框类型。
expanded
在常规格式和扩展格式之间切换。如果启用了扩展格式,则所有输出都包含两个列,并且列名称位于左列而数据位于右列。这种模式对于宽表尤其有用。
fieldsep 'arg'
仅当输出格式设置为 unaligned 时有效,指定字段分隔符,默认分隔符为 |(竖线)。

例如,要将 Tab 指定为字段分隔符:

\pset fieldsep '\t'
footer
在是否显示默认表尾之间切换: int 行)
null 'string'
指定此项可将列 null 值表示为 string。默认情况下,Vertica 将 null 值呈现为空字段,这可能会被误认为是空字符串。

例如:

\pset null '(null)'
pager [always]
在针对查询和 vsql 帮助输出是否使用寻呼机之间切换。如果已设置环境变量 PAGER,则输出会传送到指定的程序。否则会使用由平台决定的默认设置(例如 more)。

如果寻呼机已关闭,则不会使用寻呼机。如果寻呼机已打开,则只会在适当时使用寻呼机;也就是说,输出将传送到终端,并且不会显示在屏幕上。(vsql 无法准确评估何时应使用寻呼机。)

如果始终使用该实参进行限定,则始终使用寻呼机。

recordsep 'char'
仅当输出格式设置为 unaligned 时有效,指定用于分隔表记录(元组)的字符,默认分隔符为换行符。
tableattr html‑attribute[...]
指定要放在 HTML table 标记中的属性,例如 cellpaddingbgcolor
title ['title‑str']
将位于查询结果输出之前的标题设置为 title‑str。HTML 输出呈现如下:
<caption>title-str</caption>

要移除标题,请重新发出命令,省略 title‑str 实参。

trailingrecordsep
开关要在未对齐输出模式中使用的尾随记录分隔符。
t[uples_only]
在仅显示元组和完整显示之间切换。完整显示可能会显示额外信息,例如,列标题、表标题和各个表尾。在仅显示元组模式下,只会显示实际表数据。

快捷方式

以下 \pset 命令有快捷方式:

\pset expanded
\x
\pset fieldsep 'arg'
\f
\pset format aligned
\a
\pset format html
\H
\pset tableattr html‑attribute[...]
\T html‑attribute[...]
\pset title title-str
\C ['title-str']
\pset tuples_only
\t

示例

请参阅输出格式设置示例

8 - \set

S将内部变量设置为一个或多个值。如果指定了多个值,则将它们串连起来。未限定的 \set 命令将列出所有内部变量。

要取消设置变量,请使用 vsql 元命令 \unset

语法

\set [var [value]...]

参数

var
要设置的内部变量的名称。有效的变量名区分大小写,可以包含字符、数字和下划线。vsql 将几个变量视为特殊变量,如变量中所述。
value
要在变量 var 中设置的值。如果未指定值,则变量设置为无值。

如果设置为空字符串,则变量设置为无值。如果省略此实参,则 \set 返回所有内部变量。

如果未提供任何实参,则 \set 返回所有内部变量。例如:

=> \set
VERSION = 'vsql'
AUTOCOMMIT = 'off'
VERBOSITY = 'default'
PROMPT1 = '%/%R%# '
PROMPT2 = '%/%R%# '
PROMPT3 = '>> '
ROWS_AT_A_TIME = '1000'
DBNAME = 'dbadmin'
USER = 'dbadmin'
PORT = '5433'
LOCALE = 'en_US@collation=binary'
HISTSIZE = '500'

9 - \timing

如果设置为 on,则返回每个 SQL 语句运行的时间长度(以毫秒为单位)。结果包括:

  • 获取第一个行块所需的时间长度

  • 直到最后一个块格式化的总时间。

未限定的 \timing 在打开和关闭计时之间切换。您可以通过分别使用选项 ONOFF 限定命令来显式打开和关闭计时。

语法

\timing [ON | OFF]

示例

以下未限定的 \timing 命令在打开和关闭计时之间切换:

=> \timing
Timing is on
=> \timing
Timing is off

以下示例显示了一个打开计时的 SQL 命令:

=> \timing
Timing is on.
=> SELECT user_name, ssl_state, authentication_method, client_authentication_name,
     client_type FROM sessions WHERE session_id=(SELECT session_id FROM current_session);
 user_name | ssl_state | authentication_method | client_authentication_name | client_type
-----------+-----------+-----------------------+----------------------------+-------------
 dbadmin   | None      | ImpTrust              | default: Implicit Trust    | vsql
(1 row)

Time: First fetch (1 row): 73.684 ms. All rows formatted: 73.770 ms