[PSQL介绍]
psql是一个PostgreSQL的基于终端的前端(相当于Oracle数据库的SQLPLUS)。它让你能交互式地键入查询,把它们发送给PostgreSQL,并且查看查询结果。此外,它还提供了一些元命令和多种类似Shell的特性来实现书写脚本,以及对大量任务的自动化作业。

[PSQL常用命令]
1.查询当前数据库

psql -l

pstgres 数据库怎么重启 psql数据库_SQL

2.数据库登录

psql -h <hostname or ip> -p <端口> [数据库] [用户]

pstgres 数据库怎么重启 psql数据库_数据库_02


※1 如果我们需要在已经登录的状态切换到其他用户或数据库,可以参考如下命令:

postgres=# \c <数据库> <切换用户>

※2 通常我们会通过用户环境变量简化一些参数配置。

cat ~/.bash_profile

pstgres 数据库怎么重启 psql数据库_pstgres 数据库怎么重启_03


※ 数据库部署完毕,它会有一个postgres的数据库,还有两个模板数据库template0(最精简)和template1(默认模板)。用户在创建数据库时,默认是从模板数据库template1克隆出来的。如果向template1中添加一些表或函数,那么新创建的数据库就会继承template1的内容。

3.数据库退出

postgres=# \q

pstgres 数据库怎么重启 psql数据库_pstgres 数据库怎么重启_04

4.PSQL执行SQL命令

psql -c "select * from test limit 10" zhong zuser01

pstgres 数据库怎么重启 psql数据库_sql_05


5.PSQL执行SQL文件

vi /tmp/test.sql	
	truncate table test;
	DROP TABLE test;
	CREATE TABLE test(id int4, name text, create_time timestamp without time zone default clock_timestamp());
	ALTER TABLE test ADD PRIMARY KEY (id);
	INSERT INTO test(id,name) SELECT n,n || '_francs' from generate_series(1,500) n;
/opt/pgsql/bin/psql zhong zuser01 -f /tmp/test.sql

pstgres 数据库怎么重启 psql数据库_数据库_06


6.PSQL常用元命令

参数

用途

\h

查看帮助文档

\c 数据库名

切换数据库

\du

查询所有用户与权限

\db

查询表空间信息

\dp

查询表权限分配

\dt

查询用户所有表

\d [表或索引]

查询表与索引定义

\di [索引名]

查询用户所有索引

\db+

查询数据库容量

\d+

查询所有表容量

\di+

查询所有索引容量

\sf <函数名称>

查看函数代码

\x

设置查询结果输出模式

\pset border <0|1|2>

设置输出格式边框宽

\timing <on|off>

显示SQL已执行时间

※ 通过tab键实现补全元命令或表名称

[PSQL常见问题]
1.PSQL自动提交如何取消?
方法一:通过begin命令与commit/rollback命令结合实现;
方法二:直接关闭psql自动提交功能;

\set autocommit off

2.PSQL显示乱码?
客户端与服务器端字符不一致时,PSQL会出现部分显示乱码。

\encoding gbk
\encoding utf8

3.如何将常用的SQL命令制作为元命令方式?
通过编辑.psqlrc文件就可以实现

vi ~/.psqlrc
\set active_session 'select pid, usename, datname, query, client_addr from pg_stat_activity where pid<> pg_backend_pid() and state=\'active\' order by query;'

pstgres 数据库怎么重启 psql数据库_SQL_07


如下是我常用的定制:

-- 登录提示符
\set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# '

-- 查询活动会话
\set active_session 'select pid, usename, datname, state, query, client_addr from pg_stat_activity where pid<> pg_backend_pid() order by query;'

-- 查询等待事件
\set wait_event 'select pid,usename,datname,query,client_addr,wait_event_type,wait_event from pg_stat_activity where pid <> pg_backend_pid() and wait_event is not null order by wait_event_type;'

-- 查询数据库连接数
\set connections 'select datname, usename, client_addr, count(*) from pg_stat_activity where pid<> pg_backend_pid() group by 1,2,3 order by 1,2,4 desc;'
  1. pgpass密码文件
%APPDATA%\postgresql\pgpass.conf
hostname:port:database:username:password

[更新履历]
2019-12-05 新增用户切换命令信息
2019-12-28 新增pgpass免密文件