欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

203、PostgreSQL之psql使用

程序员文章站 2022-03-15 18:58:56
...

前言:

psql是PostgreSQL自带的命令行客户端工具,具有非常丰富的功能, 类似于Oracle的sqlplus,MySQL的mysql,MongoDB的MongoDB等等命令行交互界面,对于DBA来说,熟悉psql是非常有必要也是很有帮助的。

1.连接数据库实例:

psql -h 127.0.0.1 -U root -d postgres

参数说明
在psql使用时,总是有一些参数需要你注意一下,否则可能懵逼半天

  • -A 设置非对齐输出模式
  • -t,只显示数据,不显示字段名称和返回的结果集行数
  • -c, 调用SQL语句命令
  • -f, 调用sql脚本文件

2.如何创建一个新库mydb

创建表空间目录(在shell界面下)
$ mkdir -p /data/johnny/pgdata/12/data/pg_tblspc/mydb_tbs

创建一个新用户(psql界面)
postgres=# create user pguser with encrypted password 'admin123';

创建表空间
postgres=# create tablespace mydb_tbs owner pguser LOCATION '/data/johnny/pgdata/12/data/pg_tblspc/mydb_tbs';

创建数据库
postgres=# create database mydb with owner=pguser template=template0 tablespace=mydb_tbs;

赋权

postgres=# grant all on database mydb to pguser with grant option;        --
postgres=# grant all on tablespace mydb_tbs to pguser;

3.外部调用sql语句

$ psql -h 10.67.37.45 -U root -d mydb -c 'select * from test_1 where id=1'

id |  name
----+--------
  1 | 1_kobe
(1 row)

批量执行sql命令(即调用sql脚本文件)
$ psql -h 10.67.37.45 -U root -d mydb -f test_q.sql

4.在psql中如何显示SQL语句的执行时间:

mydb=# \timing     --timing命令是你不二的选择
Timing is on.
mydb=# select count(*) from test_1;
count
--------
100000
(1 row)

Time: 8.100 ms

5.反复执行当前SQL命令

mydb=# select now();
             now
-----------------------------
2020-05-06 15:03:10.8976+08
(1 row)
Time: 0.462 ms

mydb=# \watch 1    --watch命令就会每隔1秒钟执行一次select now()命令;
Wed 06 May 2020 03:03:14 PM CST (every 1s)
             now
------------------------------
2020-05-06 15:03:14.87073+08
(1 row)

Time: 0.282 ms
Wed 06 May 2020 03:03:15 PM CST (every 1s)
              now
-------------------------------
2020-05-06 15:03:15.872128+08
(1 row)

6.变更psql提示符

mydb=# \set PROMPT1 '%/%R%#'  --具体提示符都有哪些含义,可以自己查查
mydb=#\echo :PROMPT1
%/%R%#