PostgreSql psql 中必须掌握的一组常用命令
本文带你学习PostgreSql中一组常用命令,帮助你更快、更有效从PostgreSql中查询数据。
- 连接PostgreSQL 数据库
下面命令指定用户连接至数据库,回车后输入对应密码。
psql -d database -U user -W
举例postgres用户连接postgres数据库:
psql -d postgres -U postgres -W
用户 postgres 的口令:
psql (10.15)
postgres=#
如果数据库非本机,则需要增加-h选项:
psql -h host -d database -U user -W
使用SSL方式连接,使用下面命令:
psql -U user -h host "dbname=db sslmode=require"
- 切换新数据库连接
连接数据库之后,当前用户可能需要切换至其他数据库。切换之后则前面的连接关闭,如果忽略user参数则默认为当前用户。
\c dbname username
举例:
postgres=# \c TestDb
口令:
您现在已经连接到数据库 "TestDb",用户 "postgres".
TestDb=#
成功从postgres切换到TestDb数据库。
- 列出有效数据库
列出当前数据库服务器上的所有数据库,使用\l
命令:
\l
- 列出当前数据库所有表使用
\dt
命令:
\dt
- 查看表结构
查看表结构,如列、类型、列修饰符等,使用下面命令:
\d table_name
- 列出有效schema
列出当前连接数据库所有scheam,使用\dn命令:
\dn
- 列出有效函数
列出当前数据库的有效函数,使用\df命令:
\df
- 列出有效试图
列出当前数据库有效试图,使用\dv命名:
\dv
- 列出用户及其角色
列出用户及其赋予的角色,使用\du命令:
- 执行前面命令
通过version()函数返回当前postgreSql服务器的版本:
SELECT version();
现在你想节省时间,再次执行上一次命令,使用\g命名:
\g
psql会再次执行SELECT version();
- 命令历史
显示命令历史使用 \s命令。
\s
保存命令历史到文件,需要指定文件名称:
\s filename
- 从文件执行psql命令
从文件中执行命令使用 \i命令:
\i filename
示例:
\i 'e:\\init.sql'
执行e盘init.sql文件.
- 获取命令帮助
要知道所有psql命令,使用 ?命令:
\?
获取特定PostgreSQL语句帮助,使用\h命令。举例,获取ALTER TABLE 语句的帮助,使用下面命令:
\h ALTER TABLE
- 开启查询执行时间
开启查询执行时间,使用 \timing 命令:
postgres=# \timing
启用计时功能.
postgres=# select count(*) from tbl_partition;
count
-------
0
(1 行记录)
时间:0.461 ms
postgres=#
可以再次使用相同命令关闭计时功能:
postgres=# \timing
停止计时功能.
postgres=#
- 编辑器编辑命令
如果能在编辑器中编辑命令会更方便。psql提供\e命令,psql会打开文本编辑器,并自动加载最近的命令,让你编辑执行。
在编辑器中编辑之后,保存并关闭,psql将执行命令并返回结果。
更有用的是在编辑器中编辑函数。
\ef [function name]
- 切换输出选型
psql支持某些类型的输出格式,并允许您动态地定制输出格式。
- \a 命令 从对齐切换至不对齐列输出
- \H 命令 格式化输出为HTMLT格式
postgres=# \H
输出格式是 html。
postgres=# select * from tbl_partition;
<table border="1">
<tr>
<th align="center">id</th>
<th align="center">name</th>
<th align="center">gender</th>
<th align="center">join_date</th>
<th align="center">dept</th>
</tr>
</table>
<p>(0 行记录)<br />
</p>
postgres=#
- 退出psql
使用\q命令退出psql,回车后结束psql.
\q
好了,常用的命令差不多就这些,应付PostgreSQL中常用任务应该够了,遇到问题别忘了使用? 。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/109709818