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

返回本页常规视图.

从命令行进行连接

可以在多个客户端平台上使用 vsql 从命令行连接到数据库。

如果由于任何原因无法建立连接(例如您没有足够的权限或者服务器未在目标主机上运行),则 vsql 会返回错误并终止。

语法

/opt/vertica/bin/vsql [-h host] [ -p port ] [ option...] [ dbname [ username ] ]

参数

host
如果要连接到本地服务器,则此参数是可选的。可以提供 IPv4 或 IPv6 IP 地址,或者也可以提供主机名。

如果 Vertica 服务器同时使用 IPv4 和 IPv6 地址,并且您提供了主机名而非 IP 地址,则当 DNS 已配置为同时提供 IPv4 和 IPv6 地址时,您可以选择将 IPv4 地址与 -4 选项结合使用,还可以选择将 IPv6 地址与 -6 选项结合使用。如果您使用 IPv6 并提供 IP 地址,则必须在地址后面附加 %interface name

port
数据库服务器端口。

默认值: 5433

选项
一个或多个 vsql 命令行选项

如果数据库受密码保护,则您必须指定 -w 或 --password 命令行选项。

dbname
目标数据库的名称。如果未指定,vsql 会自动连接到指定的 hostport 上的数据库。
username
数据库用户名,默认情况下是您的系统用户名。

退出代码

vsql 在正常终止时返回 0 给 shell。否则,它返回以下值之一:

  • 1:发生严重错误 — 例如,内存不足或找不到文件

  • 2:与服务器的连接不正常,并且会话未进行交互

  • 3:脚本中发生了错误,并且设置了变量 ON_ERROR_STOP

  • 命令行中无法识别的单词可能会解释为数据库名称或用户名。

示例

以下示例显示如何通过将 vsql 输出重定向到输出文件 retail_queries.out 来捕获错误消息:

$ vsql --echo-all < retail_queries.sql > retail_queries.out 2>&1

1 - 命令行选项

本节包含适用于 vsql 的命令行选项。

常规选项

‑‑command command
‑c command
运行一个命令,然后退出。此命令在 shell 脚本中很有用。
‑‑dbname {{< codevar >}}dbname{{< /codevar >}}
‑d {{< codevar >}}dbname{{< /codevar >}}
指定要连接到的数据库的名称。此命令的作用等于将 dbname 指定为命令行中的第一个非选项实参。
‑‑file filename
‑f filename
使用文件 filename 作为命令的源,而不以交互方式读取命令。处理完文件之后,vsql 将终止。
‑‑help
显示有关 vsql 命令行实参的帮助并退出。
‑‑timing
‑i
启用 \timing 元命令。
‑‑list
‑l
返回所有可用数据库并退出。忽略其他非连接选项。此命令类似于内部命令 \list
‑‑set assignment
‑‑variable assignment
‑v assignment
执行变量分配,类似于 vsql 命令 \set
‑‑version ‑V
输出 vsql 版本并退出。
‑‑no‑vsqlr
‑X
禁用所有命令行编辑和历史记录功能。

连接选项

‑4
在双堆栈环境中解析主机名时,首选 IPv4 地址。
‑6
在双堆栈环境中解析主机名时,首选 IPv6 地址。
‑B server:port[,...]
设置连接的备份服务器/端口。使用以逗号分隔的多个主机(默认设置:未设置)。如果使用 IPv6 地址,请用方括号([ 和 ])将地址括起来,并将端口放在方括号之外。例如 \B [2620:0:a13:8a4:9d9f:e0e3:1181:7f51]:5433
‑‑enable‑connection
‑load‑balance ‑C
启用连接负载均衡(默认设置:未启用)。
‑‑host hostname
‑h hostname
指定了服务器正在其上面运行的计算机的主机名。
‑k krb‑service
提供 Kerberos 主体的服务名称部分(默认设置:vertica)。-k 的作用等于使用驱动程序的 KerberosServiceName 连接字符串。
‑K krb‑host
提供 Kerberos 主体的实例或主机名部分。-K 的作用等于驱动程序的 KerberosHostName 连接字符串。
‑‑sslmode
‑m
指定用于建立与服务器的 SSL 连接的策略。选项为 require、prefer、allow 和 disable。设置 VSQL_SSLMODE 变量也可以达到同样效果。如果该变量已设置,命令行选项会覆盖它。
‑‑port {{< codevar >}}port{{< /codevar >}}
‑p {{< codevar >}}port{{< /codevar >}}
指定服务器用来侦听连接的 TCP 端口或本地套接字文件扩展名。默认使用端口 5433。
‑‑username username
‑U username
username 用户身份而非默认用户身份连接到数据库。
‑w password
指定数据库用户的密码。
‑‑password
‑W
强制 vsql 在连接到数据库之前提示输入密码。密码不会显示在屏幕上。即使使用元命令 \connect 更改数据库连接,仍会为整个会话设置此选项。

输出格式

‑‑no‑align
‑A
切换到未对齐输出模式。(默认输出模式为对齐模式。)
‑b
在命令完成后发出嘟声。
‑‑field‑separator separator
‑F separator
指定未对齐输出的字段分隔符(默认分隔符:"|")(‑P fieldsep=)。(请参阅 ‑A ‑‑no‑align。)此命令的作用等于 \pset fieldsep\f
‑‑html
‑H
打开 HTML 表格格式输出。此命令的作用等于 \pset format html\H 命令。
‑‑pset {{< codevar >}}assignment{{< /codevar >}}
‑P {{< codevar >}}assignment{{< /codevar >}}
可用于在命令行中以 \pset 样式指定输出选项。必须用等号 (=) 而非空格来分隔名称和值。因此,若要将输出格式设置为 LaTeX,您应编写 ‑P format=latex
‑Q
打开尾随记录分隔符。使用 \pset trailingrecordsep 可以开关尾随记录分隔符。
‑‑record‑separator {{< codevar >}}separator{{< /codevar >}}
‑R {{< codevar >}}separator{{< /codevar >}}
使用 separator 作为记录分隔符。此命令的作用等于 \pset recordsep 命令。
‑‑tuples‑only
‑t
禁用列名称和结果行计数表尾等的输出。它的作用等于 vsql 元命令 \t
‑‑table‑attr {{< codevar >}}options{{< /codevar >}}
‑T {{< codevar >}}options{{< /codevar >}}
可用于指定要放置在 HTML table 标记中的选项。有关详细信息,请参阅 \pset
‑‑expanded
‑x
启用扩展表格式设置模式。它的作用等于 vsql 元命令 \x

输入选项和输出选项

‑‑echo‑all
‑a
在读取输入行时将所有输入行输出为标准输出。在进行脚本处理时,此方法比交互模式更有用。此选项的作用等于将变量 ECHO 设置为 all
‑‑echo‑queries
‑e
将发送到服务器的所有 SQL 命令复制到标准输出。此命令的作用等于将变量 ECHO 设置为 queries。
‑E
显示由内部命令生成的查询。
‑n
禁用命令行编辑。
‑‑output {{< codevar >}}filename{{< /codevar >}}
‑o {{< codevar >}}filename{{< /codevar >}}
将所有查询输出写入到 filename。此命令的作用等于使用 vsql 元命令 \o
‑‑quiet
‑q
指定 vsql 以安静模式工作(无信息输出,例如欢迎消息)。此选项可与 -c 选项结合使用。在 vsql 中,设置 QUIET 变量也可以达到相同效果。
‑‑single‑step
‑s
在单步模式下运行以调试脚本。强制要求 vsql 在将每个语句发送到数据库之前发出提示,以便取消执行。
‑‑single‑line ‑S
在单行模式下运行,在此模式下,换行符与分号一样会终止 SQL 命令。

1.1 - -A --no-align

-A--no‑align 切换到未对齐输出模式。默认输出模式为对齐模式。

1.2 - -a --echo-all

-a--echo-all 在读取输入行时将所有输入行输出为标准输出。在进行脚本处理时,此选项比交互模式更有用。此选项的作用等于将变量 ECHO 设置为 all

1.3 - -c --command

-c command\--command command 将运行单个命令并在运行后退出。此命令在 shell 脚本中很有用。

可以使用以下两者之一:

  • 一个命令字符串,该命令字符串可由不包含特定于 vsql 的功能的服务器完全解析。

  • 单个元命令

不能将 SQL 元命令和 vsql 元命令一起使用。但是,可以按如下所示将字符串传送到 vsql:

echo "\\timing\\\\select * from t" | ../Linux64/bin/vsql
                Timing is on.
                i | c | v
                ---+---+---
                (0 rows)

1.4 - -d --dbname

-d db‑name or \--dbname db‑name 指定要连接的数据库的名称。此选项的作用等于将 db‑name 指定为命令行中的第一个非选项实参。

1.5 - -E

-E 显示由内部命令生成的查询。

1.6 - -e --echo-queries

-e \--echo-queries 同时将发送到服务器的所有 SQL 命令复制到标准输出。此选项的作用等于将变量 ECHO 设置为 queries

1.7 - -F --field-separator

-F separator or \--field-separator separator 指定未对齐输出的字段分隔符(默认分隔符:"|")(-P fieldsep=)。(请参阅 -A \--no-align。)它的作用等于 \pset fieldsep\f

若要将字段分隔符值设置为一个控制字符,请使用 shell 的控制字符转义符号。在 Bash 中,可以使用美元符号 ($) 后跟加单引号的字符串的形式在实参中指定控制字符。此字符串可以包含 C 字符串转义(例如 \t 表示制表符)或反斜线 (\),后跟要使用的字符的八进制值。

以下示例演示了如何将分隔符字符设置为制表符 (\t)、垂直制表符 (\v) 以及垂直制表符的八进制值 (\013)。

$ vsql -At -c "SELECT * FROM testtable;"
A|1|2|3
B|4|5|6

$ vsql -F $'\t' -At -c "SELECT * FROM testtable;"
A       1       2       3
B       4       5       6

$ vsql -F $'\v' -At -c "SELECT * FROM testtable;"
A
 1
  2
   3
B
 4
  5
   6
$ vsql -F $'\013' -At -c "SELECT * FROM testtable;"
A
 1
  2
   3
B
 4
  5
   6

1.8 - -f --file

-f filename\--file filename 使用 filename 作为命令的源,而不以交互方式读取命令。处理完文件之后,vsql 将终止。

如果 filename 是连字符 (-),则会读取标准输入。

使用此选项与编写 vsql < filename 不同。使用 -f 可启用部分附加功能(例如,带行号的错误消息)。相反,使用 shell 的输入重定向的变体始终应生成与您在手动输入所有内容时已获取的输出完全相同的输出。

1.9 - ?--help

-? \--help 显示有关 vsql 命令行实参的帮助并退出。

1.10 - -H --html

-H \--html 打开 HTML 表格格式输出。此选项的作用等于 \pset format html\H 命令。

1.11 - -h --host

-h hostname\--host hostname 指定了服务器正在其上面运行的计算机的主机名。使用此标志远程连接到 Vertica。

具有以下要求和限制:

  • 如果您将客户端身份验证与 gsskrb5 的 Kerberos 连接方法结合使用,则必须指定 -h hostname

  • 如果要从本地连接连接到 Vertica,但要将身份验证记录访问方法 HOST(而不是 LOCAL)结合使用,请使用 -h 选项。

1.12 - -i -- timing

启用 \timing 元命令。您只能将此命令与 -c --command-f --file 命令一起使用:

$VSQL -h host1 -U user1 -d VMart -p 15 -w ****** -i -f transactions.sql

您只能将 -i-c(命令)和 -f(文件名)命令一起使用。有关详细信息,请参阅命令行选项

从命令行输入 -i 选项,然后运行会话以打开计时。例如:

$VSQL -h host1 -U user1 -d VMart -p 15 -w ****** -i -f transactions.sql
$VSQL-h host1 -U user1 -d VMart -p 15 -w ****** -i -c "SELECT user_name,
ssl_state, authentication_method, client_authentication_name, client_type FROM sessions
WHERE session_id=(SELECT session_id FROM current_session);"

1.13 - -l --list

-l--list 返回所有可用数据库并退出。忽略其他非连接选项。此命令类似于内部命令 \list

1.14 - -m --sslmode

-m--sslmode 指定用于建立与服务器的 SSL 连接的策略。选项为 verify_fullverify_ca requirepreferallowdisable。设置 VSQL_SSLMODE 变量也可以达到同样效果。如果该变量已设置,命令行选项会覆盖它。

有关这些模式的信息,请参阅 为 ODBC 客户端配置 SSL。

1.15 - -n

-n 禁用命令行编辑。

1.16 - -o --output

-o filename\--output filename 将所有查询输出写入 filename。它的作用等于 vsql 元命令 \o

1.17 - -P --pset

-P assignment\--pset assignment 可用于在命令行中以 \pset 样式指定输出选项。请注意,必须用等号而非空格来分隔名称和值。因此,若要将输出格式设置为 LaTeX,您应编写 -P format=latex

1.18 - -p --port

-p port\--port port 指定服务器用来侦听连接的 TCP 端口或本地套接字文件扩展名。默认使用端口 5433。

1.19 - -q --quiet

-q--quiet 指定 vsql 以安静模式工作。默认情况下,它会输出欢迎消息和各种信息输出。如果使用此选项,则这些信息均不显示。此选项可与 -c 选项结合使用。在 vsql 中,设置 QUIET 变量也可以达到相同效果。

1.20 - -R --record-separator

-R separator\--record-separator separator 指定将 separator 作为记录分隔符。它的作用等于 \pset recordsep 命令。

1.21 - -S --single-line

-S \--single-line 在单行模式下运行,在此模式下,换行符与分号一样会终止 SQL 命令。

1.22 - -s --single-step

-s \--single-step 在单步模式下运行以调试脚本。强制要求 vsql 在将每个语句发送到数据库之前发出提示,以便取消执行。

1.23 - -T --table-attr

-T table‑options\--table-attr table‑options 允许您指定要放置在 HTML table 标记中的选项。有关详细信息,请参阅 \pset

1.24 - -t --tuples-only

-t--tuples-only 禁用列名称和结果行计数表尾等的输出。它的作用等于 vsql 元命令 \t

1.25 - -V --version

-V--version 输出 vsql 版本并退出。

1.26 - -v --variable --set

-v assignment\--variable assignment\--set assignment 指定变量分配,类似于 vsql 元命令 \set

若要取消设置变量,请省略等号。若要设置不具有值的变量,请使用等号而省略值。请在早期启动阶段执行这些分配,以便可以在稍后覆盖预留用于内部用途的变量。

1.27 - -X --no-vsqlrc

-X \--no-vsqlrc 防止读取启动文件(系统范围 vsqlrc 文件或用户的 ~/.vsqlrc 文件)。

1.28 - -x --expanded

-x--expanded 启用扩展表格式设置模式。它的作用等于 vsql 元命令 \x

2 - 从非群集主机进行连接

在非群集 Linux 主机上,您可以使用 Vertica vsql 可执行映像连接到 Vertica 数据库。

  • 在 Red Hat、CentOS 和 SUSE 系统上,您可以安装包括 vsql 可执行文件的客户端驱动程序 RPM。有关详细信息,请参阅安装 vsql 客户端

  • 如果非群集主机与群集主机运行的 Linux 版本相同,请将映像文件复制到远程系统。例如:

    $ scp host01:/opt/vertica/bin/vsql .$ ./vsql
    
  • 如果非群集主机运行的 Linux 发行版或版本与群集主机不同,则必须安装 Vertica 服务器 RPM 才能获取 vsql:

    1. 通过浏览到 Vertica 网站下载相应的 RPM 包。在支持 (Support) 选项卡上,选择客户下载 (Customer Downloads)

    2. 如果您下载 RPM 所用的系统不是非群集主机,请将文件传输到非群集主机。

    3. 以 root 身份登录到非群集主机,并使用以下命令安装 RPM 包:

      # rpm -Uvh filename
      

      其中,*filename * 是所下载的包。请注意,要使用 vsql,您无需在非群集主机上运行 install_vertica 脚本。

  • 使用与群集主机相同的命令行选项

  • 不能在 Cygwin bash shell (Windows) 上运行 vsql。请使用 ssh 连接到群集主机,然后再运行 vsql。