这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
从命令行进行连接
可以在多个客户端平台上使用 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 会自动连接到指定的 host 和 port 上的数据库。
注意
在 12.0.1 之前的 vsql 版本中,此参数的默认值是您的系统用户名。如果您尝试使用 vsql 12.0.0 或更早版本连接到 Vertica 12.0.1+ 数据库而不指定数据库名称,vsql 将返回以下错误:
Database <span class="code-variable">system_username</span> does not exist.
要避免此问题,请指定 dbname 或升级到 vsql 12.0.1+。
-
username
- 数据库用户名,默认情况下是您的系统用户名。
退出代码
vsql 在正常终止时返回 0 给 shell。否则,它返回以下值之一:
示例
以下示例显示如何通过将 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
- 启用连接负载均衡(默认设置:未启用)。
注意
只能对双堆栈环境中的一个地址族使用负载均衡。例如,如果已为 IPv6 地址配置了负载均衡,则当 IPv4 客户端连接到服务器并请求执行负载均衡时,服务器不允许执行该操作。
-
‑‑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 命令。
注意
仅根据客户请求提供此模式。在某个行中将 SQL 和元命令一起使用时,Vertica 建议不要使用单行模式。在单行模式下,经验不足的用户可能不了解执行顺序。
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 脚本中很有用。
可以使用以下两者之一:
不能将 SQL 元命令和 vsql 元命令一起使用。但是,可以按如下所示将字符串传送到 vsql:
echo "\\timing\\\\select * from t" | ../Linux64/bin/vsql
Timing is on.
i | c | v
---+---+---
(0 rows)
注意
如果在
echo
中使用双引号 ("),则反斜杠的个数必须翻倍 (\)。
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。
具有以下要求和限制:
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_full
、verify_ca require
、prefer
、allow
和 disable
。设置 VSQL_SSLMODE
变量也可以达到同样效果。如果该变量已设置,命令行选项会覆盖它。
有关这些模式的信息,请参阅
为 ODBC 客户端配置 SSL。
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 命令。
注意
此模式仅对迫切需要的用户提供,但您并非必须使用此模式,尤其是当您在某个行中将 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:
-
通过浏览到 Vertica 网站下载相应的 RPM 包。在支持 (Support) 选项卡上,选择客户下载 (Customer Downloads)。
-
如果您下载 RPM 所用的系统不是非群集主机,请将文件传输到非群集主机。
-
以 root 身份登录到非群集主机,并使用以下命令安装 RPM 包:
# rpm -Uvh filename
其中,*filename * 是所下载的包。请注意,要使用 vsql,您无需在非群集主机上运行 install_vertica
脚本。
-
使用与群集主机相同的命令行选项。
-
不能在 Cygwin bash shell (Windows) 上运行 vsql。请使用 ssh 连接到群集主机,然后再运行 vsql。