磐维数据库简介
“中国移动磐维数据库”(ChinaMobileDB),简称“磐维数据库”(PanWeiDB)。是中国移动信息技术中心首个基于中国本土开源数据库打造的面向ICT基础设施的自研数据库产品。
其产品内核能力基于华为 OpenGauss 开源软件,并进一步提升了系统稳定性。
磐维数据库 V1.0 基于 openGauss 3.0 研发,在2022年12月29日,openGauss Summit 2022大议上正式发布。
磐维数据库 V2.0 基于 openGauss 5.0 研发,在2023年12月28日,openGauss Summit 2023大会上重磅发布。
磐维数据库2.0,具有高性能、高可靠、高安全、高兼容等特点,能够为集中式、分布式、云原生、一体机等多种应用场景提供强大支撑。
1.磐维数据库查询结果按列展示
磐维数据库中如何实现查询结果按列展示?类似与MySQL数据库的\G效果,可以使用\x命令,以扩展方式显示查询结果
[omm@pw01 data]$ gsql -d postgres
gsql ((PanWeiDB 2.0.0 (Build0)) compiled at 2024-01-05 17:19:18 commit 9fbca90 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=# \x
Expanded display is on.
postgres=# \l
List of databases
-[ RECORD 1 ]-----+------------
Name | panweidb
Owner | omm
Encoding | UTF8
Collate | C
Ctype | C
Access privileges |
-[ RECORD 2 ]-----+------------
Name | postgres
Owner | omm
Encoding | UTF8
Collate | C
Ctype | C
Access privileges |
-[ RECORD 3 ]-----+------------
Name | template0
Owner | omm
Encoding | UTF8
Collate | C
Ctype | C
Access privileges | =c/omm
| omm=CTc/omm
-[ RECORD 4 ]-----+------------
Name | template1
Owner | omm
Encoding | UTF8
Collate | C
Ctype | C
Access privileges | =c/omm
| omm=CTc/omm
postgres=# select * from pg_user limit 1;
-[ RECORD 1 ]----+-------------
usename | pwaudit
usesysid | 34
usecreatedb | f
usesuper | f
usecatupd | f
userepl | f
passwd | ********
valbegin |
valuntil |
respool | default_pool
parent | 0
spacelimit |
useconfig |
nodegroup |
tempspacelimit |
spillspacelimit |
usemonitoradmin | f
useoperatoradmin | f
usepolicyadmin | f
postgres=#
postgres=# \x
Expanded display is off.
postgres=#
2.gsql常用命令介绍
本文介绍磐维数据库里后台psql工具在一些常用场景下的快捷使用命令。
2.1 使用-r便捷编辑模式
[omm@pw01 data]$ gsql -d postgres -r
gsql ((PanWeiDB 2.0.0 (Build0)) compiled at 2024-01-05 17:19:18 commit 9fbca90 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=#
否则当输入出错时,不能直接使用删除键。
2.2 快速编辑SQL并执行
元命令\e自动打开上次的查询进行编辑,编辑完成之后立刻执行
[omm@pw01 data]$ gsql -d postgres -r
gsql ((PanWeiDB 2.0.0 (Build0)) compiled at 2024-01-05 17:19:18 commit 9fbca90 last mr )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.
postgres=# select * from pg_users limit 1;
ERROR: relation "pg_users" does not exist on dn_6001_6002_6003
LINE 1: select * from pg_users limit 1;
^
postgres=# \e
select * from pg_users limit 1;
~
上面使用\e直接在上一个SQL语句里进行编辑修改,然后wq保存退出编辑模式之后,自动执行新SQL语句。
2.3 定制客户端提示符
客户端提示符变量,我们可以定制PROMPT1(等待新命令时的提示符),.gsqlrc文件可以进行下面的设置:
\set PROMPT1 '%`date +%H:%M:%S` (%n@%M:%>)%/%R%#%x'
postgres=# \set PROMPT1 '%`date +%H:%M:%S` (%n@%M:%>)%/%R%#%x'
17:40:30 (omm@local:/database/panweidb/tmp:17700)postgres=#
17:40:32 (omm@local:/database/panweidb/tmp:17700)postgres=#select * from dual;
dummy
-------
X
(1 row)
17:40:50 (omm@local:/database/panweidb/tmp:17700)postgres=#
PROMPT1变量可以定制操作系统的命令,例如显示时间。
2.4 使用边框美化查询结果
在.gsqlrc文件增加下面的设置,可以对查询结果设置边框,美化输出。
\pset border 2
\pset linestyle unicode
2.5 查询结果自动适配屏幕宽度
在psql里面使用如下pset命令
pset format wrapped \pset columns 0
或者psql选项里加这两个设置$ psql -r --pset=format=wrapped --pset=columns=0
2.6 输出不同的查询格式
文本紧凑模式
[omm@pw01 data]$ psql -qtA -c "select * from pg_user limit 2;"
pwaudit|34|0|0|0|0|********|||default_pool|0||||||0|0|0
pwsso|35|0|0|0|0|********|||default_pool|0||||||0|0|0
[omm@pw01 data]$
文本紧凑模式,使用多字符分隔符@@
[omm@pw01 data]$ psql -qtA -F '@@' -c "select * from pg_user limit 2;"
pwaudit@@34@@0@@0@@0@@0@@********@@@@@@default_pool@@0@@@@@@@@@@@@0@@0@@0
pwsso@@35@@0@@0@@0@@0@@********@@@@@@default_pool@@0@@@@@@@@@@@@0@@0@@0
[omm@pw01 data]$
HTML格式
[omm@pw01 data]$ psql -qtH -c "select * from pg_user limit 2;"
<table border="1">
<tr valign="top">
<td align="left">pwaudit</td>
<td align="right">34</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">********</td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left">default_pool</td>
<td align="right">0</td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
</tr>
<tr valign="top">
<td align="left">pwsso</td>
<td align="right">35</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">********</td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left">default_pool</td>
<td align="right">0</td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left"> </td>
<td align="left">0</td>
<td align="left">0</td>
<td align="left">0</td>
</tr>
</table>
[omm@pw01 data]$
2.7查看元命令的query语句
使用-E或者–echo-hidden查看db的执行语句
$ psql -E -c "\l"
[omm@pw01 data]$ psql -E -c "\l"
********* QUERY **********
SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
d.datcollate as "Collate",
d.datctype as "Ctype",
pg_catalog.array_to_string(d.datacl, E'\n') AS "Access pr