PostgreSQL数据库管理 第三章实例管理与管理工具

目录

第三章实例管理与管理工具

概述

3.1 实例管理

1 启动实例

2 关闭实例

3.2psql内置命令(元命令)

3.3.1 Psql的两种操作模式:交互模式与非交互模式

1 交互模式

2 非交互模式

3.3.2 定制psql缺省环境

1 设置设置语句执行时间

2 Tab键自动补全

3.3.3 psql使用技巧

1 用watch命令重复执行语句

2 执行存储在外部的sql语句

3 可以使用通配符 *

3.3.4 psq|如何传递变量到SQL

1内部 \set 方式

2 外部-v参数方式

3.3.5使用psq|实现数据的导入和导出

1 使用psql导入数据

2使用Psql导出数据

3 修改的数据导入

3.3.7 帮助

3.3.8 Psql常用命令

1 查看与切换数据库

2 查看数据库对象

4 psql字符集

X psql常用其他内置命令

3.3 pgAdmin


第三章实例管理与管理工具

概述

3.1 实例管理

pg_ ct1 init[db] [-D datadir] [-s] [-o ini tdb- options]

pg_ ct1 start [-D datadir] [-1 filename] [-W] [-t seconds] [-s] [-o options] [-p path] [-c]

pg_ ct1 stop [-D datadir] [-m s[mart]I f[ast]I i [mmediate] ] [-W] [-t seconds] [-s]

pg_ _ct1 restart [-D datadir] [-m s[mart] | f[ast] | i [mmediate] ] [-w] [-t seconds] [-s] [-o options] [-c]

pg_ ct1 reload [-D datadir] [-s]

pg_ ct1 status [-D datadir]

pg_ ct1 promote [-D datadir] [-W] [-t seconds] [-s]

pg_ ct1 ki11 signal_ name process_ id

1 启动实例

[postgres@Redhat7 ~]$ pg_ctl start -D /pgdb/

2 关闭实例

 

pg_ ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t seconds] [-s]

 

■-m :数据库关闭的模式

-smart :等待所有数据库连接断开后再关闭数据库

- fast :回滚所有活动事务,然后强制断开所有会话,最后再正常关闭数据库

一immediate :立即终止所有服务器进程,等于宕机,下次启动会进入恢复状态。不推荐使用

 

[postgres@Redhat7 ~]$ pg_ctl stop -D /pgdb –m f

waiting for server to shut down.... done

server stopped

■PostgreSQL支持 十多种认证方法,常见的有trust、reject. md5和password等

- trust不需要密码

- reject拒绝登录

md5使用双重md5加密密码

- password使用明文密码

 

3.2psql内置命令(元命令)

psql是一个PostgreSQL的基于终端的前端。它让你能交互式地键入查询,把它们发送给PostgreSQL,并且查看查询结果。或者,输入可以来自于一个文件或者命令行参数。此外,psql还提供一些元命令和多种类似 shell 的特性来为编写脚本和自动化多种任务提供便利。

psql是PostgreSQL的交互终端,等同于Oracle中的sqlplus。执行该命令连接数据库时, 默认的用户和数据库是postgres

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

psql -h 127.0.0.1 -p 5432 -d database -U postgres

-h 数据库ip ,-p 端口号 ,-d 数据库名 -U 登录用户名

 

    #\c 数据库名    :切换数据库,相当于mysql的use dbname

    #\q             :退出 psql

    #\l             :列举数据库,相当于mysql的show databases

    #\dt            :列举表,相当于show tables

    #\d 表名        :查看表结构,相当于desc tblname

    #\conninfo      :显示当前连接的相关信息

    #\timing        :切换命令计时开关 (目前是 关闭)

    #\! [命令]      :在 shell 里执行命令或开启一个shell

    #\a             :在非对齐模式和对齐模式之间切换

    #\C [标题]      :设定资料表标题或取消

    #\f [分隔符]    :显示或设定非对齐模式的栏位分隔符号

    #\H             :切换 HTML 输出模式 (目前是 关闭)

    #\o [文件名]    :将全部查询结果写入档案或 |管道"pipe"

    #\db [数据库名] :列出表空间

    #\du [数据库名] :列出角色

    #\p             :显示查询缓存区的内容,即打印上一个SQL命令

    #\cd [目录]     :改变目前的工作目录

    #\i 文件名      :从文件中执行命令

    #\echo [字串]   :将字串写至标准输出

    #\w [文件名]    :将上一个SQL命令输出到指定的文件或管道"pipe"

    #\g [文件名]    :将上一个SQL命令的结果输出到指定文件或管道"pipe"

    #\o [文件名]    :将后面的全部查询结果输出到指定文件或管道"pipe",直到遇到下一个单独的 #\o

    #\unset 变量名称 : 清空(删除)内部变量

    #\encoding [编码名称] :显示或设定客户端编码

    #\password [用户名称] :安全地为用户改变口令  

    #\prompt [变量名称]   :提示用户设定内部变量

#\set [变量名称 [变量值]] :设定内部,若无参数则列出全部变量

3.3.1 Psql的两种操作模式:交互模式与非交互模式

1 交互模式

直接在操作系统的命令行界面上键入psql并回车,从操作系统提示符切换到psql提示符后就表示已经进入了psql 的交互模式界面。你现在就可以执行命令了,记得要输入分号作为命令结束标记,要是不输就直接回车的话,psql 会认为命令还未输入完成,会在换行后等待继续输人。

2 非交互模式

 

要在非交互模式下使用psql,请从OS命令提示符执行psql,并给其传送-一个脚本 文件。psql的“非交互模式”是指在调用psql时直接以选项的形式指定要执行的脚本,脚本中可以含有任意数量的SQL和psql语句,然后psql会自动执行此脚本的内容,期间无需与用户进行交互,这就是“非交互模式”的本意。要在非交互模式下执行脚本文件,只需使用-f选项即可

psql -f  script_ file

要在非交互模式下执行SQL语句,只需使用-c选项即可,如果要- -次执行多个语句,语句之间请用分号分隔:

psql -d postgresql -C "DROP TABLE IF EXISTS dross; CREATE SCHEMA staging;"

 

3.3.2 定制psql缺省环境

1 设置设置语句执行时间

编辑用户主目录 下的.psqlrc文件

vi ~/.psqlrc

\timing on

2 Tab键自动补全

psql对Tab键自动补全功能的支持是一个很赞的特性,能够在没有完全记住数据库对象名称或者SQL命令语法的情况下使用,帮助用户轻松地完成各项数据库维护工作。如下所示:

T_STATION=# select * from t_test;

 

 

 

3.3.3 psql使用技巧

1 用watch命令重复执行语句

\watch命令是PostgreSQL 9.3版中为psql引人的一项新功能。它可以实现以固定的频率反复执行某个语句,以便持续观察其输出。例如你需要持续监控系统中当前正在执行的所有语句的情况。

每10秒钟,查询一次执行的sql语句。

SELECT datname, query FROM pg_stat_activity WHERE  pid != pg_backend_pid(); \watch 10

2 执行存储在外部的sql语句

\i 文件名

osdba=# \i getrunsql

 

3 可以使用通配符 *

\d+ t*

PostgreSQL数据库管理 第三章实例管理与管理工具

 

3.3.4 psq|如何传递变量到SQL

1内部 \set 方式

\set元子命令可以设置变量,格式如下所示,name表示变量名称,value 表示变量值,如果不填写value,变量值为空,也是取消变量。

\set  name Value

T_STATION=# \set v 2

T_STATION=# select * from t_test where id=:v;

PostgreSQL数据库管理 第三章实例管理与管理工具

2 外部-v参数方式

[postgres@pghost1 -1s paql -v v=1 mydb pquser -f 1.sql

id1 name

-------+------

1|a

(1 row)

 

3.3.5使用psq|实现数据的导入和导出

psql支持一个叫作\copy的命令,该命令可以将数据导出到文本文件中,同时也可以从文本文件中导人数据。文本文件中默认使用制表符作为分隔符,当然你也可以指定使用其他分隔符。文本中必须使用换行符来分隔不同的行,否则无法正确区分两行记录。

1 使用psql导入数据

T_STATION=# \copy t_test from /home/postgres/t.csv;

COPY 2

Time: 2.338 ms

2使用Psql导出数据

使用条件导出

T_STATION=# \copy (select * from t_test where id>19) to '/home/postgres/t.csv';

COPY 1

Time: 1.326 ms

全部导出

T_STATION=# \copy  t_test  to '/home/postgres/tall.csv';

COPY 20

Time: 0.224 ms

导出数据带抬头HEADER

T_STATION=# \copy (select * from t_test where id<1) to '/home/postgres/t.csv' with csv HEADER;

COPY 2

Time: 0.345 ms

 

[postgres@pg11m ~]$ cat /home/postgres/t.csv

id,info,c_time

0,jjj,1989-01-01 00:00:00

0,syj,1985-01-19 00:00:00

 

3 修改的数据导入

需要注意的地方分隔符是tab

T_STATION=# \copy t_test from /home/postgres/t.csv;

COPY 1

Time: 0.756 ms

不使用默认分隔符DELIMITER

[postgres@pg11m ~]$ cat /home/postgres/t.csv

0,syj,1985-01-19

T_STATION=# \copy t_test from /home/postgres/t.csv DELIMITER ',';

COPY 1

Time: 0.770 ms

 

 

3.3.7 帮助

postgres=# help

You are using psql, the command-line interface to PostgreSQL.

Type:  \copyright for distribution terms

       \h for help with SQL commands

       \? for help with psql commands

       \g or terminate with semicolon to execute query

       \q to quit

 

postgres=# \?

General

  \copyright             show PostgreSQL usage and distribution terms

  \crosstabview [COLUMNS] execute query and display results in crosstab

  \errverbose            show most recent error message at maximum

3.3.8 Psql常用命令

1 查看与切换数据库

\l 查看数据库 \c 切换数据库

postgres=# \l

PostgreSQL数据库管理 第三章实例管理与管理工具

\c 可选参数 dbname [ username ] [ host ] [ port ] 

postgres=# \c template0

FATAL:  database "template0" is not currently accepting connections

Previous connection kept

 

2 查看数据库对象

 #\dt            :列举表,相当于show tables
  #\d 表名        :查看表结构,相当于desc tblname

#\db [数据库名] :列出表空间
 #\du [数据库名] :列出角色

#\dn 展示当前数据库下所有schema信息

SHOW search_path;  显示当前使用的schema

PostgreSQL数据库管理 第三章实例管理与管理工具

 

\dxx[S+]

xx各种不同对象

S显示系统对象

+显示详细信息

PostgreSQL数据库管理 第三章实例管理与管理工具

atlasdb=# create table test1(id int,name varchar(32),age int);

CREATE TABLE

 

PostgreSQL数据库管理 第三章实例管理与管理工具

可以使用通配符

atlasdb=# \d+ test*

 

4 psql字符集

\encoding :显示数据库编码

postgres=# \encoding

UTF8

 

show client_ encoding; : 查看客户端编码

postgres=# show client_ encoding;

client_ encoding

UTF8

(1 row)

 

设定客户端编码

postgres=# set client_ encoding to ' GBK ;

SET

postgres=# show client_ encoding;

client_ encoding

GBK

(1 row)

 

 

 

X psql常用其他内置命令

\timing on :命令运行时间

\pset :输出的显示格式

- \pset border 0 :输出无边框

- \pset border 1 :输出有内边框

- \pset border 2 :输出有内外边框

\x: 以列式显示每行数据

\i :执行外部脚本文件

\echo :输出- -段文本

 

3.3 pgAdmin

pgAdmin,一个设计,维护和管理 Postgres 数据库用的通用工具。

上一篇:wsl 启 psql


下一篇:Elevator