购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.7 元命令

元命令是在gsql中输入的以不带引号的反斜杠开头的命令。元命令简洁实用。开发人员熟练掌握该命令后可以极大地提高工作效率。

在使用元命令的过程中需要注意如下事项。

● gsql元命令的格式是反斜杠后面紧跟一个动词,之后是参数。参数命令动词和其他参数以任意个空白字符间隔。

● 若希望在参数中包含空白,则必须用单引号包括空白。若希望在这样的参数中包含单引号,则可以在单引号前加一个反斜杠。任何包含在单引号中的内容都会被进一步进行类似C语言的替换:\n(表示新行)、\t(表示制表符)、\b(表示退格)、\r(表示回车符)、\f(表示换页)、\digits(八进制表示的字符)、\xdigits(十六进制表示的字符)。

● 用双引号包围的内容会被当作一个命令行传入shell。该命令的输出(删除结尾的新行)被当作参数值。

● 如果不带引号的参数以英文状态的冒号“:”开头,则它会被当作一个gsql变量,并且该变量的值最终会成为真正的参数值。

● 一些命令以一个SQL标识的名称(如一个表)为参数。这些参数遵循SQL语法关于双引号的规则:不带双引号的标识强制转换为小写英文字母,而双引号保护英文字母不进行大小写转换,并且允许在标识符中使用空白。在使用双引号时,成对的双引号在结果名称中被解析成一个双引号。例如,FOO"BAR"BAZ被解析成fooBARbaz,而"Aweird""name"被解析成Aweird"name。

● 对参数的解析在遇到另一个不带引号的反斜杠时停止。此时一般认为是一个新的元命令的开始。特殊的双反斜杠序列(\\)标识参数的结尾并将继续解析后面的SQL语句。这样可以自由地在一行中混合SQL和gsql命令。但是,在任何情况下,一个元命令的参数都不能延续超过行尾。

常用的元命令如下。

\h(\help) [NAME]:表示给出指定SQL语句的语法帮助。如果没有给出参数NAME,则gsql会列出可获得帮助的所有命令。如果参数NAME是一个星号(*),则显示所有SQL语句的语法帮助。例如,查询创建物化视图的语法命令如下:

test=> \h create material view
Command:     create materialized view
Description: define a new materialized view
Syntax:
create [ incremental ] materialized view table_name
    [ (column_name [, ...] ) ]
    [ tablespace tablespace_name ]
    AS query

\c [DBNAME]:表示切换数据库。

\q:表示退出gsql程序。在一个脚本文件中,该命令只在脚本终止时执行。

\echo [STRING]:表示把字符串写到标准输出。例如下面的命令:

test=> \echo who r u ?
who r u ?

\w FILE:表示将当前查询缓冲区输出到文件。

\i FILE:表示从文件FILE中读取内容,并将其当作输入,执行查询。

例如,在服务器目录openGauss下编辑命令文件aaa.txt,输入查询命令“select version();”,然后保存。通过元命令调用aaa.txt中的命令:

test=> \i /openGauss/aaa.txt
                          version
----------------------------------------------------------
 (openGauss-lite 5.0.0 build a07d57c3) compiled at 2023-03-29 03:49:47 commit 0 last mr  release
(1 row)

\o [FILE]:表示把所有的查询结果发送到文件中。使用该命令后,后面的所有查询结果都将不再输出到屏幕,而是全部输出到文件中。如果想恢复输出到屏幕,只须执行\o命令即可。

\copy:表示将数据从文件导入表,或将数据从表导出到文件中。

例如,将表b的内容导出到文件b.txt中的命令如下:

test=> select * from b;
 id | demo
----+---------
  1 |   a
  2 |   b
(2 rows)
test=> \copy b to '/home/omm/b.txt';

查看导出的文件的命令如下:

[omm@localhost ~]$ cat b.txt
1       a
2       b

导入过程与此类似,具体命令如下:

test=> \copy b from '/home/omm/b.txt';
test=> select * from b;
 id | demo
----+---------
  1 |   a
  2 |   b
  1 |   a
  2 |   b
(4 rows)

导出时可以对数据进行筛选,也可以指定分隔符,具体命令如下:

\copy (select * from b where id=1) to '/home/omm/bb.txt' delimiter ',';

查看导出文件的命令如下:

[omm@localhost ~]$ cat bb.txt
1,a
1,a

也可以指定导出成csv文件,具体命令如下:

test=> \copy (select * from b where id=1) to '/home/omm/b.csv' with csv header;
[omm@localhost ~]$ cat b.csv
id,demo
1,a
1,a

\d[S+]:表示列出当前search_path模式下所有的表、视图和序列。其中,参数S表示列出系统对象。

search_path为用户能看到的schema,通常为"$user", public,即用户默认模式(与用户名相同的模式)和public模式。

\d[S+] NAME:表示列出指定表、视图和索引的结构。例如下面的命令:

test=> \d t1
                   Table "test.t1"
 Column |              Type              | Modifiers
--------+--------------------------------+-----------
     id |                        integer |
     sj | timestamp(0) without time zone |
   demo |         character varying(200) |
  demo2 |                           text |

\d[+] [PATTERN]:表示列出所有的表、视图和索引。其中,参数+表示列出更多的信息。

例如,列出所有t开头的表的命令如下:

\d t*

\da[S] [PATTERN]:表示列出所有可用的聚集函数,以及它们操作的数据类型和返回值类型。

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

\ddp [PATTERN]:表示显示所有默认的使用权限。

\dg[+] [PATTERN](功能同\du命令):表示列出所有的数据库角色。

\dn[S+] [PATTERN]:表示列出所有模式(名称空间)。如果向命令中追加参数+,则会列出与每个模式相关的权限及其描述。

\do[S] [PATTERN]:表示列出所有可用的操作符,以及它们的操作数和返回的数据类型。

\dT[S+] [PATTERN]:表示列出所有的数据类型。

\du[+] [PATTERN]:表示列出所有的数据库角色。

\df[+] [PATTERN]:表示列出所有的存储过程和函数。

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

\sf [PATTERN]:该命令后面接函数名后可查看函数的定义。

\z [PATTERN]:表示列出数据库中所有的表、视图和序列,以及它们相关的访问特权。

\?:表示列出所有的元命令以及这些元命令的说明及用法。具体命令如下: UCH2B8c8EtTKOjmsW8orBMSoJLt1lPcYFlU+k1fsSOL8p9yJJ79pGO54BBReM1AI

test=> \?
点击中间区域
呼出菜单
上一章
目录
下一章
×