使用Windows gsql客户端连接集群
用户在创建好数据仓库集群,开始使用集群数据库之前,需要使用数据库SQL客户端连接到数据库。GaussDB(DWS)提供了与集群版本配套的Windows gsql命令行客户端工具,您可以使用Windows gsql客户端通过集群的公网地址或者内网地址访问集群。
操作步骤
- 在计算机本地Windows操作系统服务器(Windows cmd)中安装和运行gsql客户端。Windows操作系统支持Windows Server 2008/Windows 7及以上。
- 请参见下载客户端下载Windows gsql客户端,并将压缩包解压到本地文件夹中。
图1 Windows gsql客户端文件夹
- 在本地主机单击“开始”并搜索“cmd”用管理员身份运行或单击快捷键“Win+R”打开Windows cmd窗口。
- 设置环境变量,32位选择x86文件夹;64位选择x64文件夹。
方式一:命令行设置环境变量,打开Windows cmd窗口,执行set path=<window gsql>;%path%,其中<window gsql>为上一步骤解压Windows gsql客户端的文件夹路径。例如:
1
set path=C:\Users\xx\Desktop\dws_8.1.x_gsql_for_windows\x64;%path%
方式二:在控制面板中选择“系统 > 高级系统设置 > 高级 > 环境变量”,在系统环境变量Path中增加gsql路径。例如:
图2 设置Windows环境变量
- (可选)如果要使用SSL方式连接集群,请参考使用SSL进行安全的TCP/IP连接章节,在客户端主机配置SSL认证相关的参数。
SSL连接方式的安全性高于非SSL方式,建议在客户端使用SSL连接方式。
- 在Windows cmd窗口执行以下命令,使用gsql客户端连接GaussDB(DWS)集群中的数据库。
1
gsql -d <数据库名称> -h <集群地址> -U <数据库用户> -p <数据库端口> -W <集群密码> -r
参数说明如下:
- “数据库名称”:输入所要连接的数据库名称。首次使用客户端连接集群时,请指定为集群的默认数据库“gaussdb”。
- “集群地址”:请参见获取GaussDB(DWS)集群连接地址进行获取。如果通过公网地址连接,请指定为集群“公网访问域名”,如果通过内网地址连接,请指定为集群“内网访问域名”。如果通过弹性负载均衡连接,请指定为“弹性负载均衡地址”。
- “数据库用户”:输入集群数据库的用户名。首次使用客户端连接集群时,请指定为创建集群时设置的默认管理员用户,例如“dbadmin”。
- “数据库端口”:输入创建集群时设置的“数据库端口”。
例如,执行以下命令连接GaussDB(DWS)集群的默认数据库gaussdb:
1
gsql -d gaussdb -h 10.168.0.74 -U dbadmin -p 8000 -W password -r
显示如下信息表示gsql工具已经连接成功:
1
gaussdb=>
注意事项
- Windows cmd默认的字符集是GBK,所以Windows gsql默认的client_encoding为GBK,部分UTF-8编码的字符无法在Windows gsql中显示。
建议:-f执行的文件使用UTF-8编码,并设置默认的编码格式为UTF-8(set client_encoding=’utf-8’;)
- Windows gsql中的路径需要使用‘/’作为分隔符,否则会报错。因为在元命令中‘\’是作为元命令开始的标志,在一般的单引号中,‘\’起转义作用。
1 2 3 4 5 6 7
gaussdb=> \i D:\test.sql D:: Permission denied postgres=> \i D:/test.sql id ---- 1 (1 row)
- Windows gsql使用‘\!’元命令执行系统命令时,需要使用系统命令要求的路径分隔符,一般是‘\’。
1 2 3 4
gaussdb=> \! type D:/test.sql 命令语法不正确。 gaussdb=> \! type D:\test.sql select 1 as id;
- Windows gsql不支持元命令‘\parallel’。
1 2
gaussdb=> \parallel ERROR: "\parallel" is not supported in Windows.
- Linux shell中可以使用单引号和双引号作为字符串边界,但在Windows必须使用双引号作为字符串边界。
1 2 3 4 5
gsql -h 192.168.233.189 -p 8109 -d postgres -U odbcuser -W password -c "select 1 as id" id ---- 1 (1 row)
使用单引号时报错,并忽略输入。1 2 3 4 5 6
gsql -h 192.168.233.189 -p 8109 -d postgres -U odbcuser -W password -c 'select 1 as id' gsql: warning: extra command-line argument "1" ignored gsql: warning: extra command-line argument "as" ignored gsql: warning: extra command-line argument "id'" ignored ERROR: unterminated quoted string at or near "'select" LINE 1: 'select
- Windows gsql在建立连接之后长时间未使用,连接session超时,会出现SSL报错,需要重新登录。报错如下:
1
SSL SYSCALL error: Software caused connection abort (0x00002745/10053), remote datanode <NULL>, error: Result too large
- Windows下Ctrl+C退出gsql。在当前行输入SQL语句时,若捕获到Ctrl+C信号后,无法将状态调整到重新输入的状态,会按照当前没有输入处理,将直接退出gsql。
- Windows gsql不支持连接字符集为LATIN1的数据库,报错信息为:
1
gsql: FATAL: conversion between GBK and LATIN1 is not supported
- gsqlrc.conf文件的位置。
- Windows Server系统中可能缺少MSVCP100.dll,使用gsql报错信息为:
图3 报错信息
解决方法:需要补充MSVCP100.dll动态链接库文件。可下载Microsoft Visual C++ 可再发行程序包:“Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package”,安装对应包“vcredist_x86.exe/vcredist_x64.exe”,即可补充所需的动态链接库文件。
gsql命令参考
有关gsql的命令参考和更多信息,请参见《数据仓库服务工具指南》。