GaussDB客户端工具:GSQL

GSQL是GaussDB数据库的客户端连接工具,默认仅支持从服务器本地连接数据库,连接到远程数据库需要在服务端进行配置。

gsql支持交互式输入和执行SQL,也可以执行SQL脚本。gsql还内置可以方便查看数据库对象信息的元命令。

连接数据库

使用gsql连接数据库时,gsql必须与数据库版本配套。

gsql连接数据库命令:

gsql -h 数据库IP -p 数据库端口 -d 数据库名 -U 连接用户 -W 连接用户口令

gsql连接数据库示例:

gsql -h192.168.66.8 -p8000 -d gaussdb -U tony

# 集中式部署时,可指定所有DN节点,gsql会尝试连接所有节点直到找到主DN节点
gsql -h192.168.66.8,192.168.66.9,192.168.66.10 -p8000 -d gaussdb -U tony

# 未指定参数选项时,会优先被解释为数据库名,然后是用户名
gsql gaussdb omm -p8000   #相当于 gsql -d gaussdb -U omm -p8000

# 未指定连接用户时,默认以操作系统用户连接
gsql -d gaussdb -p8000    #相当于 gsql -d gaussdb -U omm -p8000

获取gsql命令帮助:

gsql --help

获取gsql元命令帮助(需连接数据库):

Type "help" for help.

tpcc=> help
You are using gsql, the command-line interface to gaussdb.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with gsql commands
       \g or terminate with semicolon to execute query
       \q to quit

变量与提示符

设置变量

gsql支持通过类似Shell的方式设置和查看变量。

语法:

\set                   --查看所有变量
\set myvar1 12345      --设置变量myvar1,值为12345
\echo :myvar1          --查看变量myvar1的值
\unset myvar1          --撤销变量myvar1

示例:

tpcc=> \set
AUTOCOMMIT = 'on'
PROMPT1 = '%o%R%# '
PROMPT2 = '%o%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
VERSION = '(GaussDB Kernel 503.1.0 build f53b4ed8) compiled at 2023...'
DBNAME = 'tpcc'
USER = 'root'
HOST = '/data/cluster/temp'
PORT = '8000'
ENCODING = 'UTF8'

tpcc=> \set myvar1 12345
tpcc=> \echo :myvar1 
12345

tpcc=> \unset myvar1 
tpcc=> \echo :myvar1 
:myvar1

特殊变量

gsql预定义了一些特殊变量。所有特殊变量名都以大写字母、数字和下划线组成。

特殊变量设置方法含义
DBNAME\set DBNAME xxx当前连接的数据库名
HOST\set HOST xxx已连接数据库主机名
PORT\set PORT port已连接数据库的端口
USER\set USER xxx已连接的数据库用户
ECHO\set ECHO all|queryall相当于gsql -a,query相当于gsql -e
ECHO_HIDDEN\set ECHO_HIDDEN on|off|noexecon同时显示gsql元命令实际调用的SQL和查询结果,off只显示查询结果,noexec只显示调用的SQL
ENCODING\set ENCODING xxx当前客户端的字符编码
FETCH_COUNT\set FETCH_COUNT n为正整数n时,表示执行SELECT时每次从结果集中取n行到缓存并输出;为其他值时,一次性输出结果集中所有行
HISTCONTROL\set HISTCONTROL ignorespace|ignoredups|ignoreboth|noneignorespace以空格开始的行不会被记录到历史命令,ignoredups历史命令中已有的行不会被重复记录
HISTFILE\set HISTFILE xxx存储历史命令的文件,缺省为.bash_history
HISTSIZE\set HISTSIZE n保存的历史命令个数
IGNOREEOF\set IGNOREEOF n忽略gsql中输入的前n个EOF(通常是Ctrl+C)
LASTOID\set LASTOID oid最后影响的OID,即为从INSERT或lo_import命令返回的值
ON_ERROR_ROLLBACK\set ON_ERROR_ROLLBACK on|interactive|off当一个事务块里的语句出错时,on表示忽略错误而事务继续,interactive只在交互的会话里忽略错误,off表示出错时回滚整个事务
ON_ERROR_STOP\set ON_ERROR_STOP on|offon表示命令执行出错时立即停止,返回已执行命令的结果;off表示跳过错误继续执行
VERBOSITY\set VERBOSITY terse|default|verbose用于控制错误信息的输出详尽程度。terse信息最简略,verbose信息最详细

:经测试,部分特殊变量可能不会按官方文档的描述起作用。

示例:

tpcc=> \echo :DBNAME
tpcc
tpcc=> \echo :USER
root
tpcc=> \echo :ENCODING
UTF8

提示符变量

控制gsql提示符的三个特殊变量。

提示符变量作用
PROMPT1gsql请求一个新命令时使用的提示符
PROMPT2在一个命令期待更多输入时(SQL没有以分号结束但是换行、或者引号不完整)显示的提示符
PROMPT3执行COPY命令时期望在终端输入数据时显示的提示符

查看当前的提示符变量:

tpcc=> \echo :PROMPT1
%o%R%# 
tpcc=> \echo :PROMPT2
%o%R%# 
tpcc=> \echo :PROMPT3
>> 

提示符变量支持的符号:

符号含义
%M主机的全名(包含域名)
%>正在侦听的端口号
%n数据库会话的用户名
%#如果当前用户是数据库管理员,使用#,否则使用>
%/当前的数据库名
%R对于PROMPT1通常是等号=,对于PROMPT2可能是-、*、$、单引号或者双引号
%:namegsql变量name的值
%[…%]包含终端控制符,用于控制颜色、背景、提示符的文本风格等

修改提示符变量:

tpcc=>\echo :PROMPT1 
%o%R%#

tpcc=>\set PROMPT1 %n@%/%R%#
root@tpcc=>

root@tpcc=>\set PROMPT1 %n@%/@%m%R%#
root@tpcc@local=>

root@tpcc@local=>\set PROMPT1 %n@%/@%M%R%#
root@tpcc@local:/data/cluster/temp=>

元命令

查看支持的gsql元命令:

tpcc=> \?
General
  \copyright             show GaussDB Kernel usage and distribution terms
  \g [FILE] or ;         execute query (and send results to file or |pipe)
  \h(\help) [NAME]              help on syntax of SQL commands, * for all commands
  \parallel [on [num]|off] toggle status of execute (currently off)
  \q                     quit gsql

Query Buffer
  \e [FILE] [LINE]       edit the query buffer (or file) with external editor
  \ef [FUNCNAME [LINE]]  edit function definition with external editor
  \p                     show the contents of the query buffer
  \r                     reset (clear) the query buffer
  \w FILE                write query buffer to file

Input/Output
  \copy ...              perform SQL COPY with data stream to the client host
  \echo [STRING]         write string to standard output
  \i FILE                execute commands from file
  \i+ FILE KEY           execute commands from encrypted file
  \ir FILE               as \i, but relative to location of current script
  \ir+ FILE KEY          as \i+, but relative to location of current script
  \o [FILE]              send all query results to file or |pipe
  \qecho [STRING]        write string to query output stream (see \o)

Informational
  (options: S = show system objects, + = additional detail)
  \d[S+]                 list tables, views, and sequences
  \d[S+]  NAME           describe table, view, sequence, or index
  \da[S]  [PATTERN]      list aggregates
  \db[+]  [PATTERN]      list tablespaces
  \dc[S+] [PATTERN]      list conversions
  \dC[+]  [PATTERN]      list casts
  \dd[S]  [PATTERN]      show object descriptions not displayed elsewhere
  \ddp    [PATTERN]      list default privileges
  \dD[S+] [PATTERN]      list domains
  \ded[+] [PATTERN]      list data sources
  \det[+] [PATTERN]      list foreign tables
  \des[+] [PATTERN]      list foreign servers
  \deu[+] [PATTERN]      list user mappings
  \dew[+] [PATTERN]      list foreign-data wrappers
  \df[antw][S+] [PATRN]  list [only agg/normal/trigger/window] functions
  \dF[+]  [PATTERN]      list text search configurations
  \dFd[+] [PATTERN]      list text search dictionaries
  \dFp[+] [PATTERN]      list text search parsers
  \dFt[+] [PATTERN]      list text search templates
  \dg[+]  [PATTERN]      list roles
  \di[S+] [PATTERN]      list indexes
  \dl                    list large objects, same as \lo_list
  \dL[S+] [PATTERN]      list procedural languages
  \dm[S+] [PATTERN]      list materialized views
  \dn[S+] [PATTERN]      list schemas
  \do[S]  [PATTERN]      list operators
  \dO[S+] [PATTERN]      list collations
  \dp     [PATTERN]      list table, view, and sequence access privileges
  \drds [PATRN1 [PATRN2]] list per-database role settings
  \ds[S+] [PATTERN]      list sequences
  \dt[S+] [PATTERN]      list tables
  \dT[S+] [PATTERN]      list data types
  \du[+]  [PATTERN]      list roles
  \dv[S+] [PATTERN]      list views
  \dE[S+] [PATTERN]      list foreign tables
  \dx[+]  [PATTERN]      list extensions
  \l[+]                  list all databases
  \sf[+] FUNCNAME        show a function's definition
  \z      [PATTERN]      same as \dp

Formatting
  \a                     toggle between unaligned and aligned output mode
  \C [STRING]            set table title, or unset if none
  \f [STRING]            show or set field separator for unaligned query output
  \H                     toggle HTML output mode (currently off)
  \pset NAME [VALUE]     set table output option
                         (NAME := {format|border|expanded|fieldsep|fieldsep_zero|footer|null|
                         numericlocale|recordsep|recordsep_zero|tuples_only|title|tableattr|pager|
                         feedback})
  \t [on|off]            show only rows (currently off)
  \T [STRING]            set HTML <table> tag attributes, or unset if none
  \x [on|off|auto]       toggle expanded output (currently off)

Connection
  \c[onnect] [DBNAME|- USER|- HOST|- PORT|-]
                         connect to new database (currently "tpcc")
  \encoding [ENCODING]   show or set client encoding
  \conninfo              display information about current connection

Operating System
  \cd [DIR]              change the current working directory
  \setenv NAME [VALUE]   set or unset environment variable
  \timing [on|off]       toggle timing of commands (currently off)
  \! [COMMAND]           execute command in shell or start interactive shell

Variables
  \prompt [TEXT] NAME    prompt user to set internal variable
  \set [NAME [VALUE]]    set internal variable, or list all if no parameters
  \unset NAME            unset (delete) internal variable

Large Objects
  \lo_export LOBOID FILE
  \lo_import FILE [COMMENT]
  \lo_list
  \lo_unlink LOBOID      large object operations

Full encryption
  \st              send token
  \send_token      send token
  \ct              clear token
  \clear_token     clear token

常用的元命令:

--从本地文件导入小批量数据
\copy table_name from '/home/omm/data.csv';
\copy table_name from '/home/omm/data.csv' with(format 'csv',delimiter '|');

--导出小批量数据到本地文件
\copy table_name to '/home/omm/data.csv';
\copy table_name to '/home/omm/data.csv' with(format 'csv',delimiter '|');

--执行SQL脚本
\i script.sql

--将SQL查询结果写入文件
\o data.txt

References
【1】https://support.huaweicloud.com/dws_faq/dws_03_0073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GottdesKrieges

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值