Bootstrap

PostgreSQL入门之基本工具+常用psql命令+show语法

目录

 

一、bin目录下常用执行程序

 1.1 pg_ctl

1.2  psql

1.3 pg_dump

1.4 pg_restore

二、psql命令

语法

三、show语法

语法

常用示例


​​​​​​​

一、bin目录下常用执行程序

 1.1 pg_ctl

语法

pg_ctl 是一个用于初始化、启动、停止或控制PostgreSQL服务器的工具.

 

使用方法:

  pg_ctl init[db] [-D DATADIR] [-s] [-o OPTIONS]                    初始化数据库实例

  pg_ctl start    [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s]

                  [-o OPTIONS] [-p PATH] [-c]                     启动数据库服务

  pg_ctl stop   [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]  关闭数据库服务

 

  pg_ctl restart  [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s]

                  [-o OPTIONS] [-c]                             重启数据库服务

  pg_ctl reload   [-D DATADIR] [-s]                           重新加载数据库配置

  pg_ctl status   [-D DATADIR]                               查看数据库服务状态

  pg_ctl promote  [-D DATADIR] [-W] [-t SECS] [-s]

  pg_ctl kill     SIGNALNAME PID                           

  pg_ctl register [-D DATADIR] [-N SERVICENAME] [-U USERNAME] [-P PASSWORD]

                  [-S START-TYPE] [-e SOURCE] [-W] [-t SECS] [-s] [-o OPTIONS]

 注册数据库服务

pg_ctl unregister [-N 服务名称]                             注销数据库服务

 

普通选项:

  -D, --pgdata=数据目录  数据库存储区域的位置

  -e SOURCE              当作为一个服务运行时要记录的事件的来源

  -s, --silent           只打印错误信息, 没有其他信息

  -t, --timeout=SECS    当使用-w 选项时需要等待的秒数

  -V, --version           输出版本信息, 然后退出

  -w, --wait             wait until operation completes (default)

  -W, --no-wait          do not wait until operation completes

  -?, --help             显示此帮助, 然后退出

如果省略了 -D 选项, 将使用 PGDATA 环境变量.

 

启动或重启的选项:

  -c, --core-files       在这种平台上不可用

  -l, --log=FILENAME    写入 (或追加) 服务器日志到文件FILENAME

  -o, --options=OPTIONS  command line options to pass to postgres

                         (PostgreSQL server executable) or initdb

  -p PATH-TO-POSTMASTER  正常情况不必要

 

停止或重启的选项:

  -m, --mode=MODE        可以是 "smart", "fast", 或者 "immediate"

 

关闭模式有如下几种:

  smart       所有客户端断开连接后退出

  fast        quit directly, with proper shutdown (default)

  immediate   不完全的关闭退出; 重启后恢复

 

允许关闭的信号名称:

  ABRT HUP INT QUIT TERM USR1 USR2

 

注册或注销的选项:

  -N 服务名称     注册到 PostgreSQL 服务器的服务名称

  -P 口令         注册到 PostgreSQL 服务器帐户的口令

  -U 用户名       注册到 PostgreSQL 服务器帐户的用户名

  -S START-TYPE   注册到PostgreSQL服务器的服务启动类型

 

启动类型有:

  auto       在系统启动时自动启动服务(默认选项)

  demand     按需启动服务

 

常用示例

pg_ctl  start  -D  $PGDATA         启动数据库服务

pg_ctl  restart  -D  $PGDATA       重启数据库服务

pg_ctl stop  -m fast   -D  $PGDATA  关闭数据库服务

pg_ctl  register  -N ‘postgresq-xx’   $PGDATA 注册服务,服务名为postgresql-xx

Pg_ctl reload -D  $PGDATA          重新加载配置、

1.2  psql

语法

psql是PostgreSQL 的交互式客户端工具。

使用方法:

  psql [选项]... [数据库名称 [用户名称]]

通用选项:

  -c,--command=命令        执行单一命令(SQL或内部指令)然后结束

 -d, --dbname=数据库名称   指定要连接的数据库 (默认:"当前用户")

  -f, --file=文件名      从文件中执行命令然后退出

  -l, --list             列出所有可用的数据库,然后退出

  -v, --set=, --variable=NAME=VALUE

                           设置psql变量NAME为VALUE

                           (例如,-v ON_ERROR_STOP=1)

  -V, --version            输出版本信息, 然后退出

  -X, --no-psqlrc         不读取启动文档(~/.psqlrc)

  -1 ("one"), --single-transaction

                          作为一个单一事务来执行命令文件(如果是非交互型的)

  -?, --help[=options]     显示此帮助,然后退出

      --help=commands      列出反斜线命令,然后退出

      --help=variables     列出特殊变量,然后退出

 

输入和输出选项:

  -a, --echo-all          显示所有来自于脚本的输入

  -b, --echo-errors        回显失败的命令

  -e, --echo-queries      显示发送给服务器的命令

 -E, --echo-hidden        显示内部命令产生的查询

  -L, --log-file=文件名  将会话日志写入文件

  -n, --no-readline       禁用增强命令行编辑功能(readline)

  -o, --output=FILENAME 将查询结果写入文件(或 |管道)

  -q, --quiet             以沉默模式运行(不显示消息,只有查询结果)

  -s, --single-step       单步模式 (确认每个查询)

  -S, --single-line        单行模式 (一行就是一条 SQL 命令)

 

输出格式选项 :

  -A, --no-align           使用非对齐表格输出模式

  -F, --field-separator=STRING

             为字段设置分隔符,用于不整齐的输出(默认:"|")

  -H, --html             HTML 表格输出模式

  -P, --pset=变量[=参数]    设置将变量打印到参数的选项(查阅 \pset 命令)

  -R, --record-separator=STRING

             为不整齐的输出设置字录的分隔符(默认:换行符号)

  -t, --tuples-only      只打印记录i

  -T, --table-attr=文本   设定 HTML 表格标记属性(例如,宽度,边界)

  -x, --expanded           打开扩展表格输出

  -z, --field-separator-zero

                           为不整齐的输出设置字段分隔符为字节0

  -0, --record-separator-zero

                           为不整齐的输出设置记录分隔符为字节0

 

联接选项:

  -h, --host=主机名        数据库服务器主机或socket目录(默认:"本地接口")

  -p, --port=端口        数据库服务器的端口(默认:"5432")

  -U, --username=用户名    指定数据库用户名(默认:"guyan")

  -w, --no-password       永远不提示输入口令

  -W, --password           强制口令提示 (自动)

常用示例

psql登录数据库

psql  -h ip  -p 端口号 -U 数据库用户 -d  数据库

psql往数据库里执行一条指令(比如SQL)

 psql  -h ip  -p 端口号 -U 数据库用户 -d  数据库 -c  “select  version();”

psql列出所有数据库对象

psql  -h ip  -p 端口号 -U 数据库用户 -l

 

​​​​​​​1.3 pg_dump

语法

pg_dump 把一个数据库转储为纯文本文件或者是其它格式.

 

用法:

  pg_dump [选项]... [数据库名字]

 

一般选项:

  -f, --file=FILENAME          输出文件或目录名

  -F, --format=c|d|t|p         输出文件格式 (定制, 目录, tar)

                               明文 (默认值))

  -j, --jobs=NUM               执行多个并行任务进行备份转储工作

  -v, --verbose                详细模式

  -V, --version                输出版本信息,然后退出

  -Z, --compress=0-9           被压缩格式的压缩级别

  --lock-wait-timeout=TIMEOUT  在等待表锁超时后操作失败

  --no-sync                    do not wait for changes to be written safely to disk

  -?, --help                   显示此帮助, 然后退出

 

控制输出内容选项:

  -a, --data-only              只转储数据,不包括模式

  -b, --blobs                  在转储中包括大对象

  -B, --no-blobs               exclude large objects in dump

  -c, --clean                  在重新创建之前,先清除(删除)数据库对象

  -C, --create                 在转储中包括命令,以便创建数据库

  -E, --encoding=ENCODING      转储以ENCODING形式编码的数据

  -n, --schema=SCHEMA          只转储指定名称的模式

  -N, --exclude-schema=SCHEMA  不转储已命名的模式

  -o, --oids                   在转储中包括 OID

  -O, --no-owner               在明文格式中, 忽略恢复对象所属者

 

  -s, --schema-only            只转储模式, 不包括数据

  -S, --superuser=NAME         在明文格式中使用指定的超级用户名

  -t, --table=TABLE            只转储指定名称的表

  -T, --exclude-table=TABLE    不转储指定名称的表

  -x, --no-privileges          不要转储权限 (grant/revoke)

  --binary-upgrade             只能由升级工具使用

  --column-inserts             以带有列名的INSERT命令形式转储数据

  --disable-dollar-quoting     取消美元 (符号) 引号, 使用 SQL 标准引号

  --disable-triggers           在只恢复数据的过程中禁用触发器

  --enable-row-security        启用行安全性(只转储用户能够访问的内容)

  --exclude-table-data=TABLE   不转储指定名称的表中的数据

  --if-exists              当删除对象时使用IF EXISTS

  --inserts                    以INSERT命令,而不是COPY命令的形式转储数据

  --no-publications            do not dump publications

  --no-security-labels         不转储安全标签的分配

  --no-subscriptions           do not dump subscriptions

  --no-synchronized-snapshots  在并行工作集中不使用同步快照

  --no-tablespaces             不转储表空间分配信息

  --no-unlogged-table-data     不转储没有日志的表数据

  --quote-all-identifiers      所有标识符加引号,即使不是关键字

  --section=SECTION            备份命名的节 (数据前, 数据, 及 数据后)

  --serializable-deferrable   等到备份可以无异常运行

  --snapshot=SNAPSHOT          为转储使用给定的快照

  --strict-names              要求每个表和/或schema包括模式以匹配至少一个实体

  --use-set-session-authorization

                               使用 SESSION AUTHORIZATION 命令代替

                ALTER OWNER 命令来设置所有权

 

联接选项:

  -d, --dbname=DBNAME       对数据库 DBNAME备份

  -h, --host=主机名        数据库服务器的主机名或套接字目录

  -p, --port=端口号        数据库服务器的端口号

  -U, --username=名字      以指定的数据库用户联接

  -w, --no-password        永远不提示输入口令

  -W, --password           强制口令提示 (自动)

  --role=ROLENAME          在转储前运行SET ROLE

 

如果没有提供数据库名字, 那么使用 PGDATABASE 环境变量

 

常用示例

默认格式备份指定库

pg_dump -h ip -p port -U username -d database -f “XXX/database.backup”

指定格式备份指定库(如明文)

pg_dump -h ip -p port -U username -d database -F p -f “XXX/database.backup”

以明文格式只备份数据库结构

pg_dump -h ip -p port -U username -d database -F p -s -f “XXX/database.backup”

只备份数据

pg_dump -h ip -p port -U username -d database -F p -a -f “XXX/database.backup”

备份指定表

pg_dump -h ip -p port -U username -d database -t tablename -f “XXX/database.backup”

​​​​​​​1.4 pg_restore

语法

pg_restore 从一个归档中恢复一个由 pg_dump 创建的 PostgreSQL 数据库.

 

用法:

  pg_restore [选项]... [文件名]

 

一般选项:

  -d, --dbname=名字        连接数据库名字

  -f, --file=FILENAME      output file name (- for stdout)

  -F, --format=c|d|t       备份文件格式(应该自动进行)

  -l, --list               打印归档文件的 TOC 概述

  -v, --verbose            详细模式

  -V, --version            输出版本信息, 然后退出

  -?, --help               显示此帮助, 然后退出

 

恢复控制选项:

  -a, --data-only             只恢复数据, 不包括模式

  -c, --clean                  在重新创建之前,先清除(删除)数据库对象

  -C, --create                 创建目标数据库

  -e, --exit-on-error          发生错误退出, 默认为继续

  -I, --index=NAME             恢复指定名称的索引

  -j, --jobs=NUM               执行多个并行任务进行恢复工作

  -L, --use-list=FILENAME      从这个文件中使用指定的内容表排序

                               输出

  -n, --schema=NAME            在这个模式中只恢复对象

  -N, --exclude-schema=NAME    do not restore objects in this schema

  -O, --no-owner               不恢复对象所属者

  -P, --function=NAME(args)    恢复指定名字的函数

  -s, --schema-only           只恢复模式, 不包括数据

  -S, --superuser=NAME         使用指定的超级用户来禁用触发器

  -t, --table=NAME             restore named relation (table, view, etc.)

  -T, --trigger=NAME          恢复指定名字的触发器

  -x, --no-privileges          跳过处理权限的恢复 (grant/revoke)

  -1, --single-transaction     作为单个事务恢复

  --disable-triggers           在只恢复数据的过程中禁用触发器

  --enable-row-security        启用行安全性

  --if-exists              当删除对象时使用IF EXISTS

  --no-data-for-failed-tables  对那些无法创建的表不进行

                               数据恢复

  --no-publications            do not restore publications

  --no-security-labels         不恢复安全标签信息

  --no-subscriptions           do not restore subscriptions

  --no-tablespaces             不恢复表空间的分配信息

  --section=SECTION            恢复命名节 (数据前、数据及数据后)

  --strict-names               要求每个表和/或schema包括模式以匹配至少一个实体

  --use-set-session-authorization

                               使用 SESSION AUTHORIZATION 命令代替

                ALTER OWNER 命令来设置所有权

 

联接选项:

  -h, --host=主机名        数据库服务器的主机名或套接字目录

  -p, --port=端口号        数据库服务器的端口号

  -U, --username=名字      以指定的数据库用户联接

  -w, --no-password        永远不提示输入口令

  -W, --password           强制口令提示 (自动)

  --role=ROLENAME          在恢复前执行SET ROLE操作

 

The options -I, -n, -N, -P, -t, -T, and --section can be combined and specified

multiple times to select multiple objects.

 

如果没有提供输入文件名, 则使用标准输入

常用示例

pg_restore的语法与pg_dump的语法基本一致,只不过是两个的功能刚好相反

 

恢复备份文件database.backup到指定库

pg_dump -h ip -p port -U username -d database -f “XXX/database.backup”

二、psql命令

使用psql 登录数据库,可以通过psql命令来对数据库进行操作,比如获取必要的资讯信息。

语法

psql登录数据库后,执行 \? 即可查看

常用示例

查看数据库列表

\l

注意:\指定后加上 “+” 能显示更详细的信息,如\l+

查看数据库用户

\du

查看表列表

\dt

三、show语法

语法

登录数据库后使用\h show即可看到show语法

postgres=# \h show

命令:       SHOW

描述:       显示运行期的参数值

语法:

SHOW 名称

SHOW ALL

 

show的作用是可以在数据库中查看当前运行参数的值(postgresql.conf配置文件中的参数)

 

常用示例

查看监听配置(listen_addresses)

show listen_addresses;

查看端口号配置

show  port;

当然,在这里提一下,想查看当前登录用户和数据库,可以通过select current_user和select current_database()查看。

 

 

 

;