2022-11-08 14:57:37 +08:00
|
|
|
|
PostgreSQL 备忘清单
|
|
|
|
|
===
|
|
|
|
|
|
|
|
|
|
[PostgreSQL](https://www.postgresql.org/docs/current/) 备忘清单为您提供了常用的 PostgreSQL 命令和语句。
|
|
|
|
|
|
|
|
|
|
入门
|
|
|
|
|
---------------
|
|
|
|
|
|
|
|
|
|
### 入门
|
|
|
|
|
|
|
|
|
|
切换和连接
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
$ sudo -u postgres psql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
列出所有数据库
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
postgres=# \l
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
连接到名为 postgres 的数据库
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
postgres=# \c postgres
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
断开
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
postgres=# \q
|
|
|
|
|
postgres=# \!
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### psql 命令
|
|
|
|
|
<!--rehype:wrap-class=col-span-2-->
|
|
|
|
|
|
|
|
|
|
参数 | 示例 | 说明
|
|
|
|
|
:- |- | -
|
|
|
|
|
`[-d] <database>` | psql -d mydb | 连接到数据库
|
|
|
|
|
`-U` | psql -U john mydb | 以特定用户身份连接
|
|
|
|
|
`-h` `-p` | psql -h localhost -p 5432 mydb | 连接到主机/端口
|
|
|
|
|
`-U` `-h` `-p` `-d` | psql -U admin -h 192.168.1.5 -p 2506 -d mydb | 连接远程 PostgreSQL
|
|
|
|
|
`-W` | psql -W mydb | 强制密码
|
|
|
|
|
`-c` | psql -c '\c postgres' -c '\dt' | 执行 SQL 查询或命令
|
|
|
|
|
`-H` | psql -c "\l+" -H postgres > database.html | 生成 HTML 报告
|
|
|
|
|
`-l` | psql -l | 列出所有数据库
|
|
|
|
|
`-f` | psql mydb -f file.sql | 从文件执行命令
|
|
|
|
|
`-V` | psql -V | 打印 psql 版本
|
|
|
|
|
<!--rehype:className=show-header-->
|
|
|
|
|
|
|
|
|
|
### 获得帮助
|
|
|
|
|
|
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
|
|
|
|
`\h` | SQL 命令语法帮助
|
|
|
|
|
`\h` DELETE | DELETE SQL 语句语法
|
|
|
|
|
`\?` | PostgreSQL 命令列表
|
|
|
|
|
|
|
|
|
|
在 PostgreSQL 控制台中运行
|
|
|
|
|
|
|
|
|
|
PostgreSQL 工作
|
|
|
|
|
-------
|
|
|
|
|
|
|
|
|
|
### Recon 观察
|
|
|
|
|
|
|
|
|
|
显示版本
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SHOW SERVER_VERSION;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
显示系统状态
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\conninfo
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
显示环境变量
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SHOW ALL;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
列出用户
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT rolname FROM pg_roles;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
显示当前用户
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT current_user;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
显示当前用户的权限
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\du
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
显示当前数据库
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT current_database();
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
显示数据库中的所有表
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\dt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
列出函数
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\df <schema>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Databases 数据库
|
|
|
|
|
|
|
|
|
|
列出数据库
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\l
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
连接到数据库
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\c <database_name>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
显示当前数据库
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT current_database();
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[创建数据库](http://www.postgresql.org/docs/current/static/sql-createdatabase.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
CREATE DATABASE <database_name> WITH OWNER <username>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
[删除数据库](http://www.postgresql.org/docs/current/static/sql-dropdatabase.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
DROP DATABASE IF EXISTS <database_name>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
[重命名数据库](http://www.postgresql.org/docs/current/static/sql-alterdatabase.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
ALTER DATABASE <old_name> RENAME TO <new_name>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
### Tables 表
|
|
|
|
|
|
|
|
|
|
列出当前数据库中的表
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\dt
|
|
|
|
|
SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
全局列表
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\dt *.*.
|
|
|
|
|
SELECT * FROM pg_catalog.pg_tables
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
列表表架构
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\d <table_name>
|
|
|
|
|
\d+ <table_name>
|
|
|
|
|
SELECT column_name, data_type, character_maximum_length
|
|
|
|
|
FROM INFORMATION_SCHEMA.COLUMNS
|
|
|
|
|
WHERE table_name = '<table_name>';
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
[创建表](http://www.postgresql.org/docs/current/static/sql-createtable.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
CREATE TABLE <table_name>(
|
|
|
|
|
<column_name> <column_type>,
|
|
|
|
|
<column_name> <column_type>
|
|
|
|
|
);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
创建表,主键自增
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
CREATE TABLE <table_name> (
|
|
|
|
|
<column_name> SERIAL PRIMARY KEY
|
|
|
|
|
);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[删除表](http://www.postgresql.org/docs/current/static/sql-droptable.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
DROP TABLE IF EXISTS <table_name> CASCADE;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Permissions 权限
|
|
|
|
|
|
|
|
|
|
成为 postgres 用户,如果您有权限错误
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
sudo su - postgres
|
|
|
|
|
psql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[授予](http://www.postgresql.org/docs/current/static/sql-grant.html) 对数据库的所有权限
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
GRANT ALL PRIVILEGES ON DATABASE <db_name> TO <user_name>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
授予数据库连接权限
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
GRANT CONNECT ON DATABASE <db_name> TO <user_name>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
授予架构权限
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
GRANT USAGE ON SCHEMA public TO <user_name>;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
授予函数权限
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO <user_name>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
授予在所有表上选择、更新、插入、删除的权限
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
GRANT SELECT, UPDATE, INSERT ON ALL TABLES IN SCHEMA public TO <user_name>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
在表上授予权限
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
GRANT SELECT, UPDATE, INSERT ON <table_name> TO <user_name>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
授予对表的选择权限
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <user_name>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
### Columns 列
|
|
|
|
|
|
|
|
|
|
[添加栏目](http://www.postgresql.org/docs/current/static/sql-altertable.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
ALTER TABLE <table_name> IF EXISTS
|
|
|
|
|
ADD <column_name> <data_type> [<constraints>];
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
更新栏
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
ALTER TABLE <table_name> IF EXISTS
|
|
|
|
|
ALTER <column_name> TYPE <data_type> [<constraints>];
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
删除列
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
ALTER TABLE <table_name> IF EXISTS
|
|
|
|
|
DROP <column_name>;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
将列更新为自增主键
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
ALTER TABLE <table_name>
|
|
|
|
|
ADD COLUMN <column_name> SERIAL PRIMARY KEY;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
使用自动递增的主键插入表中
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
INSERT INTO <table_name>
|
|
|
|
|
VALUES (DEFAULT, <value1>);
|
|
|
|
|
INSERT INTO <table_name> (<column1_name>,<column2_name>)
|
|
|
|
|
VALUES ( <value1>,<value2> );
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
### Data 数据
|
|
|
|
|
|
|
|
|
|
[选择](http://www.postgresql.org/docs/current/static/sql-select.html) 所有数据
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT * FROM <table_name>;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
读取一行数据
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT * FROM <table_name> LIMIT 1;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
搜索数据
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT * FROM <table_name> WHERE <column_name> = <value>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
[插入](http://www.postgresql.org/docs/current/static/sql-insert.html) 数据
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
INSERT INTO <table_name> VALUES( <value_1>, <value_2> );
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
[更新](http://www.postgresql.org/docs/current/static/sql-update.html) 数据
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
UPDATE <table_name>
|
|
|
|
|
SET <column_1> = <value_1>, <column_2> = <value_2>
|
|
|
|
|
WHERE <column_1> = <value>;
|
|
|
|
|
```
|
|
|
|
|
<!--rehype:className=wrap-text-->
|
|
|
|
|
|
|
|
|
|
[删除](http://www.postgresql.org/docs/current/static/sql-delete.html) 所有数据
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
DELETE FROM <table_name>;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
删除特定数据
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
DELETE FROM <table_name>
|
|
|
|
|
WHERE <column_name> = <value>;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Users 用户
|
|
|
|
|
<!--rehype:wrap-class=col-span-2-->
|
|
|
|
|
|
|
|
|
|
列出角色
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
SELECT rolname FROM pg_roles;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[创建用户](http://www.postgresql.org/docs/current/static/sql-createuser.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
CREATE USER <user_name> WITH PASSWORD '<password>';
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[删除用户](http://www.postgresql.org/docs/current/static/sql-dropuser.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
DROP USER IF EXISTS <user_name>;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[更改](http://www.postgresql.org/docs/current/static/sql-alterrole.html) 用户密码
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
ALTER ROLE <user_name> WITH PASSWORD '<password>';
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Schema
|
|
|
|
|
|
|
|
|
|
列出 Schemas
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\dn
|
|
|
|
|
SELECT schema_name FROM information_schema.schemata;
|
|
|
|
|
SELECT nspname FROM pg_catalog.pg_namespace;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[创建架构](http://www.postgresql.org/docs/current/static/sql-createschema.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
CREATE SCHEMA IF NOT EXISTS <schema_name>;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
[删除模式](http://www.postgresql.org/docs/current/static/sql-dropschema.html)
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
DROP SCHEMA IF EXISTS <schema_name> CASCADE;
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
PostgreSQL 命令
|
|
|
|
|
-----------
|
|
|
|
|
|
|
|
|
|
### 表
|
|
|
|
|
|
2022-11-11 01:51:54 +08:00
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
2022-11-08 14:57:37 +08:00
|
|
|
|
`\d <table>` | 描述表
|
|
|
|
|
`\d+ <table>` | 详细描述表格
|
|
|
|
|
`\dt` | 列出当前模式中的表
|
|
|
|
|
`\dt *.*` | 列出所有模式中的表
|
|
|
|
|
`\dt <schema>.*` | 列出架构的表
|
|
|
|
|
`\dp` | 列出表访问权限
|
|
|
|
|
`\det[+]` | 列出外部表
|
|
|
|
|
|
|
|
|
|
### 查询缓冲区
|
|
|
|
|
|
2022-11-11 01:51:54 +08:00
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
2022-11-08 14:57:37 +08:00
|
|
|
|
`\e [FILE]` | 编辑查询缓冲区(或文件)
|
|
|
|
|
`\ef [FUNC]` | 编辑函数定义
|
|
|
|
|
`\p` | 显示内容
|
|
|
|
|
`\r` | 重置(清除)查询缓冲区
|
|
|
|
|
`\s [FILE]` | 显示历史记录或保存到文件
|
|
|
|
|
`\w FILE` | 将查询缓冲区写入文件
|
|
|
|
|
|
|
|
|
|
### 信息
|
|
|
|
|
<!--rehype:wrap-class=row-span-4-->
|
|
|
|
|
|
2022-11-11 01:51:54 +08:00
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
2022-11-08 14:57:37 +08:00
|
|
|
|
`\l[+]` | 列出所有数据库
|
|
|
|
|
`\dn[S+]` | 列出架构
|
|
|
|
|
`\di[S+]` | 列出索引
|
|
|
|
|
`\du[+]` | 列出角色
|
|
|
|
|
`\ds[S+]` | 列出序列
|
|
|
|
|
`\df[antw][S+]` | 列出函数
|
|
|
|
|
`\deu[+]` | 列出用户映射
|
|
|
|
|
`\dv[S+]` | 列表视图
|
|
|
|
|
`\dl` | 列出大对象
|
|
|
|
|
`\dT[S+]` | 列出数据类型
|
|
|
|
|
`\da[S]` | 列出聚合
|
|
|
|
|
`\db[+]` | 列出表空间
|
|
|
|
|
`\dc[S+]` | 列出转化
|
|
|
|
|
`\dC[+]` | 列出演员表
|
|
|
|
|
`\ddp` | 列出默认权限
|
|
|
|
|
`\dd[S]` | 显示对象描述
|
|
|
|
|
`\dD[S+]` | 列出域
|
|
|
|
|
`\des[+]` | 列出国外服务器
|
|
|
|
|
`\dew[+]` | 列出外部数据包装器
|
|
|
|
|
`\dF[+]` | 列出文本搜索配置
|
|
|
|
|
`\dFd[+]` | 列出文本搜索词典
|
|
|
|
|
`\dFp[+]` | 列出文本搜索解析器
|
|
|
|
|
`\dFt[+]` | 列出文本搜索模板
|
|
|
|
|
`\dL[S+]` | 列出程序语言
|
|
|
|
|
`\do[S]` | 列出运算符
|
|
|
|
|
`\dO[S+]` | 列出排序规则
|
|
|
|
|
`\drds` | 列出每个数据库的角色设置
|
|
|
|
|
`\dx[+]` | 列出扩展
|
|
|
|
|
|
|
|
|
|
`S`:显示系统对象,`+`:附加细节
|
|
|
|
|
|
|
|
|
|
### 连接
|
|
|
|
|
|
2022-11-11 01:51:54 +08:00
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
2022-11-08 14:57:37 +08:00
|
|
|
|
`\c [DBNAME]` | 连接到新数据库
|
|
|
|
|
`\encoding [ENCODING]` | 显示或设置客户端编码
|
|
|
|
|
`\password [USER]` | 更改密码
|
|
|
|
|
`\conninfo` | 显示信息
|
|
|
|
|
|
|
|
|
|
### 格式化
|
|
|
|
|
|
2022-11-11 01:51:54 +08:00
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
2022-11-08 14:57:37 +08:00
|
|
|
|
`\a` | 在未对齐和对齐之间切换
|
|
|
|
|
`\C [STRING]` | 设置表格标题,如果没有则取消设置
|
|
|
|
|
`\f [STRING]` | 显示或设置未对齐的字段分隔符
|
|
|
|
|
`\H` | 切换 HTML 输出模式
|
|
|
|
|
`\t [on\|off]` | 仅显示行
|
|
|
|
|
`\T [STRING]` | 设置或取消设置 HTML \<table\> 标签属性
|
|
|
|
|
`\x [on\|off]` | 切换扩展输出
|
|
|
|
|
|
|
|
|
|
### 输入输出
|
|
|
|
|
|
2022-11-11 01:51:54 +08:00
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
2022-11-08 14:57:37 +08:00
|
|
|
|
`\copy ...` | 导入/导出表 _另见:_ [复制](#导入导出-csv)
|
|
|
|
|
`\echo [STRING]` | 打印字符串
|
|
|
|
|
`\i FILE` | 执行文件
|
|
|
|
|
`\o [FILE]` | 将所有结果导出到文件
|
|
|
|
|
`\qecho [STRING]` | 输出流的字符串
|
|
|
|
|
|
|
|
|
|
### 变量
|
|
|
|
|
|
2022-11-11 01:51:54 +08:00
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
2022-11-08 14:57:37 +08:00
|
|
|
|
`\prompt [TEXT] NAME` | 设置变量
|
|
|
|
|
`\set [NAME [VALUE]]` | 设置变量 _(如果没有参数,则列出所有变量)_
|
|
|
|
|
`\unset NAME` | 删除变量
|
|
|
|
|
|
|
|
|
|
### 杂项
|
|
|
|
|
|
2022-11-11 01:51:54 +08:00
|
|
|
|
:- | -
|
|
|
|
|
:- | -
|
2022-11-08 14:57:37 +08:00
|
|
|
|
`\cd [DIR]` | 更改目录
|
|
|
|
|
`\timing [on\|off]` | 切换时间
|
|
|
|
|
`\! [COMMAND]` | 在shell中执行
|
|
|
|
|
`\! ls -l` | 在shell中列出所有
|
|
|
|
|
|
|
|
|
|
### 大对象
|
|
|
|
|
|
|
|
|
|
- `\lo_export LOBOID FILE`
|
|
|
|
|
- `\lo_import FILE [COMMENT]`
|
|
|
|
|
- `\lo_list`
|
|
|
|
|
- `\lo_unlink LOBOID`
|
|
|
|
|
|
|
|
|
|
各种各样的
|
|
|
|
|
-------------
|
|
|
|
|
|
|
|
|
|
### 备份
|
|
|
|
|
|
|
|
|
|
使用 pg_dumpall 备份所有数据库
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
$ pg_dumpall -U postgres > all.sql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
使用 pg_dump 备份数据库
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
$ pg_dump -d mydb -f mydb_backup.sql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- `-a` 只转储数据,而不是模式(schema)
|
|
|
|
|
- `-s` 只转储模式,不转储数据
|
|
|
|
|
- `-c` 在重新创建之前删除数据库
|
|
|
|
|
- `-C` 还原前创建数据库
|
|
|
|
|
- `-t` 仅转储命名表
|
|
|
|
|
- `-F` 格式(`c`:自定义,`d`:目录,`t`:tar)
|
|
|
|
|
<!--rehype:className=style-none-->
|
|
|
|
|
|
|
|
|
|
使用 `pg_dump -?` 获取完整的选项列表
|
|
|
|
|
|
|
|
|
|
### 恢复
|
|
|
|
|
|
|
|
|
|
使用 psql 恢复数据库
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
$ psql -U user mydb < mydb_backup.sql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
使用 pg_restore 恢复数据库
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
$ pg_restore -d mydb mydb_backup.sql -c
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- `-U` 指定数据库用户
|
|
|
|
|
- `-c` 在重新创建之前删除数据库
|
|
|
|
|
- `-C` 还原前创建数据库
|
|
|
|
|
- `-e` 如果遇到错误退出
|
|
|
|
|
- `-F` 格式(`c`:自定义,`d`:目录,`t`:tar,`p`:纯文本sql(默认))
|
|
|
|
|
<!--rehype:className=style-none-->
|
|
|
|
|
|
|
|
|
|
使用 `pg_restore -?` 获取完整的选项列表
|
|
|
|
|
|
|
|
|
|
### 远程访问
|
|
|
|
|
|
|
|
|
|
获取 postgresql.conf 的位置
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
$ psql -U postgres -c 'SHOW config_file'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
附加到 postgresql.conf
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
listen_addresses = '*'
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
附加到 pg_hba.conf(与 postgresql.conf 相同的位置)
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
host all all 0.0.0.0/0 md5
|
|
|
|
|
host all all ::/0 md5
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
重启 PostgreSQL 服务器
|
|
|
|
|
|
|
|
|
|
```shell
|
|
|
|
|
$ sudo systemctl restart postgresql
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 导入/导出 CSV
|
|
|
|
|
|
|
|
|
|
将表格导出为 CSV 文件
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\copy table TO '<path>' CSV
|
|
|
|
|
\copy table(col1,col1) TO '<path>' CSV
|
|
|
|
|
\copy (SELECT...) TO '<path>' CSV
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
将 CSV 文件导入表格
|
|
|
|
|
|
|
|
|
|
```sql
|
|
|
|
|
\copy table FROM '<path>' CSV
|
|
|
|
|
\copy table(col1,col1) FROM '<path>' CSV
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
另见:[复制](https://www.postgresql.org/docs/current/sql-copy.html)
|
|
|
|
|
|
|
|
|
|
Also see
|
|
|
|
|
--------
|
2022-11-11 01:51:54 +08:00
|
|
|
|
|
|
|
|
|
- [Posgres-cheatsheet](https://gist.github.com/apolloclark/ea5466d5929e63043dcf#posgres-cheatsheet) _(gist.github.com)_
|