openGauss数据库开发调试工具指导

主要内容为使用gsql数据库开发调试工具连接openGauss数据库。

gsql客户端工具

gsql是openGauss提供在命令行下运行的数据库连接工具,可以通过此工具连接服务器并对其进行操作和维护,除了具备操作数据库的基本功能,gsql还提供了若干高级特性,便于用户使用。

gsql连接数据库

gsql是openGauss自带的客户端工具。使用gsql连接数据库,可以交互式地输入、编辑、执行SQL语句。

确认连接信息

客户端工具通过数据库主节点连接数据库。因此连接前,需获取数据库主节点所在服务器的IP地址及数据库主节点的端口号信息。

步骤 1 切换到omm用户,以操作系统用户omm登录数据库主节点。
[root@db1 script]# su - omm 
步骤 2 使用“gs_om -t status --detail”命令查询openGauss各实例情况。
[omm@db1 ~]$ gs_om -t status --detail

情况显示如下:

[ DBnode State ] 
 
node        node_ip      instance                    state 
------------------------------------------------------------------------------------- 
1  db1 192.168.0.58    6001 /gaussdb/data/db1 P Primary Normal

如上部署了数据库主节点实例的服务器IP地址为192.168.0.58。数据库主节点数据路径为“/gaussdb/data/db1”。

步骤 3 确认数据库主节点的端口号。

在步骤2查到的数据库主节点数据路径下的postgresql.conf文件中查看端口号信息。示例如下:

port = 26000				# (change requires restart)
#ssl_renegotiation_limit = 0		# amount of data between renegotiations, no longer supported
#tcp_recv_timeout = 0			# SO_RCVTIMEO, specify the receiving timeouts until reporting an error(change requires restart)
#comm_sctp_port = 1024			# Assigned by installation (change requires restart)
#comm_control_port = 10001		# Assigned by installation (change requires restart)
					# supported by the operating system:
						# The heartbeat thread will not start if not set localheartbeatport and remoteheartbeatport.
						# e.g. 'localhost=xx.xx.xxx.2 localport=12211 localheartbeatport=12214 remotehost=xx.xx.xxx.3 remoteport=12212 remoteheartbeatport=12215, localhost=xx.xx.xxx.2 localport=12213 remotehost=xx.xx.xxx.3 remoteport=12214'
					#   %r = remote host and port
alarm_report_interval = 10

26000为数据库主节点的端口号。
请在实际操作中记录数据库主节点实例的服务器IP地址,数据路径和端口号,并在之后操作中按照实际情况进行替换。

本地连接数据库

步骤 1 切换到omm用户,以操作系统用户omm登录数据库主节点。
[root@db1 script]# su - omm
步骤 2启动数据库服务
[root@db1 script]# gs_om -t start

显示如下,启动成功。

Starting cluster.
=========================================
=========================================
Successfully started.
步骤 3连接数据库。

执行如下命令连接数据库。

[omm@db1 ~]$ gsql -d postgres -p 26000 -r 

其中postgres为需要连接的数据库名称,26000为数据库主节点的端口号。请根据实际情况替换。
连接成功后,系统显示类似如下信息:

gsql ((openGauss 1.0.0 build 290d125f) compiled at 2020-05-08 02:59:43 commit 2143 last mr 131 
Non-SSL connection (SSL connection is recommended when requiring high-security) 
Type "help" for help. 
 
postgres=# 

omm用户是管理员用户,因此系统显示“DBNAME=#”。若使用普通用户身份登录和连接数据库,系统显示“DBNAME=>”。
“Non-SSL connection”表示未使用SSL方式连接数据库。如果需要高安全性时,请用SSL进行安全的TCP/IP连接。

步骤 4 退出数据库。
postgres=# \q   

gsql获取帮助

前提条件

以下操作在openGauss的数据库主节点所在主机上执行(本地连接数据库),切换到omm用户。

su - omm

连接数据库时,可以使用如下命令获取帮助信息

gsql --help

显示如下帮助信息:

...... 
Usage: 
  gsql [OPTION]... [DBNAME [USERNAME]] 
 
General options: 
  -c, --command=COMMAND    run only single command (SQL or internal) and exit 
  -d, --dbname=DBNAME      database name to connect to (default: "postgres") 
  -f, --file=FILENAME      execute commands from file, then exit 
......

连接到数据库后,可以使用如下命令获取帮助信息

步骤 1 使用如下命令连接数据库。
gsql -d postgres -p 26000 -r 
步骤 2 输入help指令。
postgres=#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
步骤 3 查看版权信息。
postgres=#\copyright

显示如下版权信息:

openGauss Database Management System
Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
步骤 4 查看openGauss支持的所有SQL语句。
postgres=#\h

显示如下信息:

Available help: 
  ABORT                             
  ALTER AGGREGATE 
  ALTER APP WORKLOAD GROUP                   
... ...
步骤 5 查看CREATE DATABASE命令的参数可使用下面的命令。
postgres=#\help CREATE DATABASE

显示如下帮助信息:

Command:     CREATE DATABASE 
Description: create a new database 
Syntax: 
CREATE DATABASE database_name 
     [ [ WITH ] {[ OWNER [=] user_name ]| 
           [ TEMPLATE [=] template ]| 
           [ ENCODING [=] encoding ]| 
           [ LC_COLLATE [=] lc_collate ]| 
           [ LC_CTYPE [=] lc_ctype ]| 
           [ DBCOMPATIBILITY [=] compatibility_type ]| 
           [ TABLESPACE [=] tablespace_name ]| 
           [ CONNECTION LIMIT [=] connlimit ]}[...] ];
步骤 6 查看gsql支持的命令。
postgres=# \? 

显示如下信息:

General 
  \copyright             show PostgreSQL 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 
  \q                     quit gsql 
... ...
步骤 7 退出数据库
postgres=# \q

gsql命令使用

前提条件

以下操作在openGauss的数据库主节点所在主机上执行(本地连接数据库),切换到omm用户。

su - omm

执行一条字符串命令

gsql命令直接执行一条显示版权信息的字符串命令

gsql -d postgres -p 26000 -c "\copyright"

显示如下,显示后退出gsql环境:

openGauss Database Management System
Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved
$

使用文件作为命令源而不是交互式输入

步骤 1 创建文件夹存放相关文档。
mkdir /home/omm/openGauss
步骤 2 创建文件,例如文件名为“mysql.sql”,并写入可执行sql语句“select * from pg_user;”。
vi /home/omm/openGauss/mysql.sql

文件打开输入i,进入INSERT模式,输入” select * from pg_user;”。

select * from pg_user;

然后点击Esc,输入“:wq”保存文档并退出。

步骤 3 执行如下命令使用文件作为命令源。
gsql -d postgres -p 26000 -f  /home/omm/openGauss/mysql.sql    

结果如下,并且gsql将在处理完文件后结束:

usename | usesysid | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valbegin | valuntil |   respool    | parent | spacel
imit | useconfig | nodegroup | tempspacelimit | spillspacelimit 
---------+----------+-------------+----------+-----------+---------+----------+----------+----------+--------------+--------+-------
-----+-----------+-----------+----------------+-----------------
 omm     |       10 | t           | t        | t         | t       | ******** |          |          | default_pool |      0 |       
     |           |           |                | 
 jack     |    16385 | f           | f        | f         | f       | ******** |          |          | default_pool |      0 |       
     |           |           |                | 
(2 rows)

total time: 3  ms
步骤 4 如果FILENAME是-(连字符),则从标准输入读取。
gsql -d postgres -p 26000 -f -
postgres=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valbegin | valuntil |   respool    | parent | spacel
imit | useconfig | nodegroup | tempspacelimit | spillspacelimit 
---------+----------+-------------+----------+-----------+---------+----------+----------+----------+--------------+--------+-------
-----+-----------+-----------+----------------+-----------------
 omm     |       10 | t           | t        | t         | t       | ******** |          |          | default_pool |      0 |       
     |           |           |                | 
 joe     |    16385 | f           | f        | f         | f       | ******** |          |          | default_pool |      0 |       
     |           |           |                | 
(2 rows)
步骤 5 退出数据库连接。
postgres=# \q               
total time: 174163  ms

列出所有可用的数据库(\l的l表示list)

gsql -d postgres -p 26000 -l    

结果如下,并且gsql将在显示后结束:

        List of databases
  Name    | Owner | Encoding  | Collate | Ctype | Access privileges 
-----------+-------+-----------+---------+-------+-------------------
 db_tpcc   | joe     | SQL_ASCII | C       | C     | 
 postgres  | omm   | SQL_ASCII | C       | C     | 
 template0 | omm   | SQL_ASCII | C       | C     | =c/omm           +
           |         |           |         |       | omm=CTc/omm
 template1 | omm   | SQL_ASCII | C       | C     | =c/omm           +
           |         |           |         |       | omm=CTc/omm
(4 rows)
$

设置gsql变量NAME为VALUE

步骤 1 设置foo的值为bar。
gsql -d postgres -p 26000 -v foo=bar 
步骤 2 在数据库能够显示foo的值。
postgres=# \echo :foo
bar
步骤 3退出数据库连接。
postgres=> \q

打印gsql版本信息。

gsql -V

结果如下,并且gsql将在显示后结束:

gsql (openGauss 1.0.0 build 0bd0ce80) compiled at 2020-06-30 18:19:23 commit 0 last mr  

使用文件作为输出源。

步骤 1创建文件,例如文件名为“output.txt”。
touch  /home/omm/openGauss/output.txt
步骤 2执行如下命令,除了正常的输出源之外,把所有查询输出记录到文件中。
gsql -d postgres -p 26000 -L /home/omm/openGauss/output.txt

进入gsql环境,输入以下语句:

postgres=# create table mytable (firstcol int);
CREATE TABLE
postgres=# insert into mytable values(100);
INSERT 0 1
postgres=# select * from mytable ;
 firstcol 
----------
      100
(1 row)
postgres=# \q
步骤 3 查看“output.txt”文档中的内容如下:
cat /home/omm/openGauss/output.txt

显示如下:

********* QUERY **********
create table mytable (firstcol int);
**************************

CREATE TABLE
********* QUERY **********
insert into mytable values(100);
**************************

INSERT 0 1
********* QUERY **********
select * from mytable;
**************************

 firstcol
----------
      100
(1 row)

将所有查询输出重定向到文件FILENAME

步骤 1 创建文件,例如文件名为“outputOnly.txt”。
touch /home/omm/openGauss/outputOnly.txt
步骤 2 执行如下命令
gsql -d postgres -p 26000 -o /home/omm/openGauss/outputOnly.txt 
步骤 3 进入gsql环境,输入以下语句:
postgres=# drop table mytable;
postgres=# create table mytable (firstcol int);
postgres=# insert into mytable values(100);
postgres=# select * from mytable;
postgres=# \q 

所有操作都没有回显。

步骤 4 查看“outputOnly.txt”文档中的内容如下:
cat /home/omm/openGauss/outputOnly.txt

显示如下:

DROP TABLE
CREATE TABLE
INSERT 0 1
 firstcol
----------
      100
(1 row)
"/opt/software/openGauss/output.txt" 8L, 76C     

安静模式

安静模式:执行时不会打印出额外信息

gsql -d postgres -p 26000 -q

进入gsql环境,输入以下语句:

postgres=# create table t_test (firstcol int);
postgres=# insert into t_test values(200);
postgres=# select * from t_test;
 firstcol 
----------
      200
(1 row)

postgres=# \q

连接上数据库,创建数据库和插入数据等都没有回显信息。

单行运行模式

单行运行模式:这时每个命令都将由换行符结束,像分号那样

gsql -d postgres -p 26000 -S

进入gsql环境,输入以下语句:

postgres^# select * from t_test;
 firstcol 
----------
      200
(1 row)

postgres^# select * from t_test
 firstcol 
----------
      200
(1 row)

postgres=# \q

语句最后结尾有;号和没有;号,效果都一样。

编辑模式

步骤 1 如下命令连接数据库,开启在客户端操作中可以进行编辑的模式。
gsql -d postgres -p 26000 -r
步骤 2 进入gsql环境,输入以下语句:

在这里插入图片描述

步骤 3 写完后不要按回车,光标在最后闪烁。

在这里插入图片描述

步骤 4 按“向左”键讲光标移动到“*”,将此符号修改为“firstcol”。

在这里插入图片描述
编辑模式“上下左右键”,“删除键”和“退格键”都可以使用,并且按下“*向上”、“向下”键可以切换输入过的命令。

步骤 5 退出数据库连接
postgres=# \q

远程使用用户名和密码连接数据库

远程使用jack用户连接ip地址为192.168.0.58端口号为26000的数据库。
登录客户端主机(192.168.0.58),使用以下命令远程登录数据库。

gsql -d postgres -h 192.168.0.58 -U jack -p 26000 -W Bigdata@123;

-d参数指定目标数据库名、-U参数指定数据库用户名、-h参数指定主机名、-p参数指定端口号信息,-W参数指定数据库用户密码。
进入gsql环境,显示如下:

gsql ((openGauss 1.0 build ec0e781b) compiled at 2020-04-27 17:25:57 commit 2144 last mr 131 )
SSL connection (cipher: DHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

postgres=> 

gsql元命令使用

前提条件

以下操作在openGauss的数据库主节点所在主机上执行(本地连接数据库),使用gsql连接到openGauss数据库。

步骤 1切换到omm用户,以操作系统用户omm登录数据库主节点。
su - omm
步骤 2gsql连接数据库。
gsql -d postgres -p 26000 -r 

打印当前查询缓冲区到标准输出

步骤 1创建“outputSQL.txt”文件。
touch /home/omm/openGauss/outputSQL.txt
步骤 2连接数据库。
gsql -d postgres -p 26000 -r
步骤 3输入以下语句。
postgres=# select * from pg_roles;
 rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb | rolcatupdate | rolcanlogin | rolreplication | rolauditadmin | rolsy
stemadmin | rolconnlimit | rolpassword | rolvalidbegin | rolvaliduntil |  rolrespool  | rolparentid | roltabspace | rolconfig |  oid
  | roluseft | rolkind | nodegroup | roltempspace | rolspillspace 
---------+----------+------------+---------------+-------------+--------------+-------------+----------------+---------------+------
----------+--------------+-------------+---------------+---------------+--------------+-------------+-------------+-----------+-----
--+----------+---------+-----------+--------------+---------------
 omm     | t        | t          | t             | t           | t            | t           | t              | t             | t    
          |           -1 | ********    |               |               | default_pool |           0 |             |           |    1
0 | t        | n       |           |              | 
 joe     | f        | t          | f             | f           | f            | t           | f              | f             | f    
          |           -1 | ********    |               |               | default_pool |           0 |             |           | 1725
5 | f        | n       |           |              | 
(3 rows)

postgres=# \w /home/omm/openGauss/outputSQL.txt
postgres=# \q
步骤 4打开文件“outputSQL.txt”文件,查看其中内容。
cat /home/omm/openGauss/outputSQL.txt

显示如下:

select * from pg_roles;

导入数据

步骤 1连接数据库。
gsql -d postgres -p 26000 -r
步骤 2创建目标表a。
postgres=# CREATE TABLE a(a int);
步骤 3导入数据,从stdin拷贝数据到目标表a。
postgres=# \copy a from stdin;

出现>>符号提示时,输入数据,输入.时结束。

Enter data to be copied followed by a newline. 
End with a backslash and a period on a line by itself. 
>> 1 
>> 2 
>> \.
步骤 4查询导入目标表a的数据。
postgres=# SELECT * FROM a; 
 a  
--- 
 1 
 2 

退出数据库:

postgres=# \q
步骤 5从本地文件拷贝数据到目标表a,创建文件/home/omm/openGauss/2.csv。
vi /home/omm/openGauss/2.csv
步骤 6输入i,切换到INSERT模式,插入数据如下:
3
4
5
  • 如果有多个数据,分隔符为‘,’。
  • 在导入过程中,若数据源文件比外表定义的列数多,则忽略行尾多出来的列
步骤 7按下Esc键,输入“:wq”后回车,保存并退出。
步骤 8连接数据库。
gsql -d postgres -p 26000 -r
步骤 9如下命令拷贝数据到目标表。
postgres=# \copy a FROM '/home/omm//openGauss/2.csv' WITH (delimiter',',IGNORE_EXTRA_DATA 'on');
步骤 10查询导入目标表a的数据。
postgres=# SELECT * FROM a; 
 a  
--- 
1 
2 
3
4
5
(5 rows)

查询表空间

postgres=# \db  

显示如下:

postgres=> 
      List of tablespaces
    Name    | Owner | Location 
------------+-------+----------
 pg_default   | omm   | 
 pg_global    | omm   | 
(2 rows)

查询表的属性。

步骤 1 创建表customer_t1。
postgres=# DROP TABLE IF EXISTS customer_t1;
postgres=# CREATE TABLE customer_t1 
( 
    c_customer_sk             integer, 
    c_customer_id             char(5), 
    c_first_name              char(6), 
    c_last_name               char(8) 
);
步骤 2 查询表的属性。
postgres=# \d+;

显示如下:

Schema |    Name     | Type  | Owner |    Size    | Storage              | Description 
--------+-------------+-------+-------+------------+----------------------------------+-------------
 public | customer_t1 | table | omm   | 0 bytes    | {orientation=row,compression=no} | 
 public | mytable     | table | omm   | 8192 bytes | {orientation=row,compression=no} | 
 public | t_test      | table | omm   | 8192 bytes | {orientation=row,compression=no} | 
 public | ta          | table | omm   | 0 bytes    | {orientation=row,compression=no} | 
(4 rows)
步骤 3查询表customer_t1的属性。
postgres=# \d+ customer_t1;

显示如下:

                           Table "public.customer_t1"
    Column     |     Type     | Modifiers | Storage  | Stats target | Description 
---------------+--------------+-----------+----------+--------------+-------------
 c_customer_sk | integer      |           | plain    |              | 
 c_customer_id | character(5) |           | extended |              | 
 c_first_name  | character(6) |           | extended |              | 
 c_last_name   | character(8) |           | extended |              | 
Has OIDs: no
Options: orientation=row, compression=no

查询索引信息

步骤 1 在表customer_t1上创建索引。
create index customer_t1_index1 on customer_t1(c_customer_id);
步骤 2查询索引信息。
postgres=# \di+;

postgres=# \di+;
显示如下:

                               List of relations
 Schema |        Name     | Type  | Owner |    Table    |    Size    | Storage | Description 
--------+--------------------+-------+-------+-------------+------------+---------+-------------
 public | customer_t1_index1 | index | omm   | customer_t1 | 8192 bytes |         |
步骤 3查询customer_t1_index1索引的信息。
postgres=# \di+ customer_t1_index1

显示如下:

                                  List of relations
 Schema |        Name     | Type  | Owner |    Table    |    Size    | Storage | Description 
--------+--------------------+-------+-------+-------------+------------+---------+-------------
 public | customer_t1_index1 | index | omm   | customer_t1 | 8192 bytes |         |

切换数据库

步骤 1创建数据库。
DROP DATABASE IF EXISTS db_tpcc02;
CREATE DATABASE db_tpcc02;
步骤 2切换数据库。
postgres=# \c db_tpcc02;

显示如下:

Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "db_tpcc" as user "omm".
db_tpcc=# 
步骤 3退出数据库:
postgres=# \q
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Gauss松鼠会

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

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

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

打赏作者

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

抵扣说明:

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

余额充值