---
title: 详解openGauss客户端工具gsql的高级用法-官方技术文章-鲲鹏社区
description: gsql是openGauss提供在命令行下运行的数据库连接工具，可以通过此工具连接服务器并对其进行操作和维护，除了具备操作数据库的基本功能，gsql还提供了若干高级特性，便于用户使用。
keywords: Gauss,详解,客户端工具,的高级用法,官方技术文章,鲲鹏社区,高级特性,变量
url: https://www.hikunpeng.com/developer/techArticles/20240228-2?envFlag=1
section: (其他)
---

# 详解openGauss客户端工具gsql的高级用法-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20240228-2?envFlag=1
描述: gsql是openGauss提供在命令行下运行的数据库连接工具，可以通过此工具连接服务器并对其进行操作和维护，除了具备操作数据库的基本功能，gsql还提供了若干高级特性，便于用户使用。
关键词: Gauss,详解,客户端工具,的高级用法,官方技术文章,鲲鹏社区,高级特性,变量

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

详解openGauss客户端工具gsql的高级用法

详解openGauss客户端工具gsql的高级用法

案例分享

发表于 2024/02/28

0

gsql的基本功能：

1、连接数据库；

2、执行SQL语句：支持交互式地键入并执行SQL语句，也可以执行一个文件中指定的SQL语句；

3、执行元命令：元命令可以帮助管理员查看数据库对象的信息、查询缓存区信息、格式化SQL输出结果、以及连接到新的数据库等。

## 高级特性

### 1. 变量

### gsql提供类似于Linux的shell命令的变量特性，可以使用gsql的原命令\set设置一个变量。格式如下：

（1）设置变量

```
\set name wang5
```

查看变量

```
\echo :name
```

要删除一个变量请使用如下方式

```
\unset name
```

查看所有变量

```
\set
```

此时name的值被删除

不写第二个参数的情况

```
\set name1
```

查看

参数被赋予空值

变量的引用

```
\set id 2
```

## 连接数据库

```
gsql -h master01 -p 15400 -d postgres -U gsname -W 'gsname@123' -r
```

-h：后面的地址（master01）是数据库所在的IP地址或者是主机名

-p：后面的端口（15400）是数据库的监听端口，默认的端口是5432

-d：后面的参数（postgres）是创建的数据库名称

-U：后面的参数（gsname）是创建的用户名

-W：后面的参数（gsname@123）是omm用户的密码

-r：开启在客户端操作中可以进行编辑的模式

禁止使用omm用户进行远程连接数据库

Trust安全认证模式（pg_hba.conf）仅允许本地登录，远程无法使用该模式登录

## 执行sql语句

在gsql中创建表

```
create table tb1(id int,name varchar2(20));
```

通常，输入的命令行在遇到分号的时候结束。如果输入的命令行没有错误，结果就会输出到屏幕上

插入数据库

```
insert into tb1(id,name) values(1,'wang5');
insert into tb1(id,name) values(2,'zhang3');
insert into tb1(id,name) values(3,'li4');
```

## 执行元命令

所谓元命令就是在gsql里输入的任何以不带引号的反斜杠开头的命令：

一般的元命令

查询缓存区元命令

输入/输出元命令

显示信息元命令

格式化元命令

连接元命令

操作系统元命令

变量元命令和表

大对象元命令

### 1. 元命令

（1）-c 的使用

```
[omm@master01 dn]$ gsql -d postgres -p 15400 -c "select * from tb1"
```

-c：声明gsql要执行一条字符串命令然后退出

（2）-f 的使用

```
[omm@master01 dn]$ gsql -d postgres -p 15400 -f /home/omm/i.sql
```

说明：i.sql里面的内容是插入3条数据库

-f:使用文件作为命令源而不是交互式输入。gsql将在处理完文件后结束

（3）-l 的使用

```
[omm@master01 dn]$ gsql -d postgres -p 15400 -l
```

-l:列出所有可用的数据库，然后退出

（4） -c -A -t -F ‘)(’ 的使用

```
[omm@master01 dn]$ gsql -d postgres -p 15400 -c "select * from tb1" -A -t -F ')('
```

-A:切换为非对齐输出模式。

-t:只打印行。

-F:设置域分隔符（默认为“|”）。

（5）-E 的使用

```
[omm@master01 dn]$ gsql -d postgres -p 15400 -E
```

-E:回显由\d和其他反斜杠命令生成的实际查询

（6） -1(数字1) -f 的使用

```
[omm@master01 dn]$ gsql -d postgres -p 15400 -1 -f /home/omm/t1.sql
```

下面是t1.sql文件中的sql，第3行insert是不能够正确执行的。

执行结果

查看是否插入成功

可以看出，t1.sql中的语句全部没有插入成功

为了做对比，把-1参数去掉，继续执行

```
[omm@master01 dn]$ gsql -d postgres -p 15400 -f /home/omm/t1.sql
```

执行结果

查看是否插入成功

可以看出，3条正确的insert语句是插入到表中的

-1 (“one”)：当gsql使用-f选项执行脚本时，会在脚本的开头和结尾分别加上START TRANSACTION/COMMIT用以把整个脚本当作一个事务执行。

这将保证该脚本完全执行成功，或者脚本无效。

说明：如果脚本中已经使用了START TRANSACTION、COMMIT、ROLLBACK，则该选项无效。

（7）-q 的使用

```
[omm@master01 dn]$ gsql -d postgres -p 15400 -q
openGauss=#

```

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

（8）-o 的使用

```
gsql -d postgres -p 15400 -o /home/omm/out.txt -c "select * from tb1"
```

通过查看out.txt，可以看到查询的结果已经存放到文件中

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

## gsql元命令

常用元命令介绍演示：

\l[+]:列出服务器上所有数据库的名称、所有者、字符集编码以及使用权限

\db[+]:列出所有可用的表空间

\c :连接到一个新的数据库

\d:列出当前模式下所有的表、视图和序列

\di:索引

\ds:序列

\dv:视图

\du:列出所有数据库角色

\df:列出所有可用函数

\dt tb1:表的信息

\h:给出指定SQL语句的语法帮助

本页内容
