psql命令
连接pg
psql -h host -p port -d dbname -U user -W
其中:
-h 参数用于指定远程 PostgreSQL 服务器的主机名或者 IP 地址。 默认值为 localhost。
-p 参数用于指定远程 PostgreSQL 服务器的端口号。默认值为 5432。
psql 常用命令
\l | 查看所有数据库 | |
\c dbname | 连接到新的数据库 | |
\c -username | 使用新用户连接当前数据库 | |
\dt | 列出当前数据库中的表 | |
\d tablename | 显示表结构 | |
\dn | 查看所有模式 | |
\df | 查看可用函数 | |
\dv | 查看可用视图 | |
\du | 列出用户及角色 | |
\timing | 查看执行时间,再次运行\timing关闭查询执行时间 | |
\s | 查看历史命令 \s filename 将历史命令保存到文件中 | |
\i | \i filename 执行psql命令 | |
\q | 退出psql |
列出数据库
\l 或者 select datname from pg_database
复制数据库
CREATE DATABASE new_db
WITH TEMPLATE old_db;
old_db 必须是模板库才能被复制
ALTER DATABASE old_db WITH IS_TEMPLATE true;
查看空间
查看数据库大小
select pg_database_size('testdb') 返回字节数
SELECT
pg_size_pretty(
pg_database_size('testdb')
); 返回kb
查看数据库大小
SELECT
pg_size_pretty(
pg_relation_size('actor')
);
pg_relation_size() 函数返回表的数据的大小,不包含表中的索引的大小。如果要获取表的总的大小,请使用 pg_total_relation_size() 函数, 如下:
SELECT
pg_size_pretty(
pg_total_relation_size('actor')
);
查看索引大小
SELECT
pg_size_pretty(
pg_indexes_size('actor')
);
查看表空间大小
SELECT
pg_size_pretty (
pg_tablespace_size('pg_default')
);
pg值大小
select pg_column_size(1::smallint);
列出表
\dt or
SELECT * FROM pg_tables
WHERE schemaname = 'public';
查看表
\d tablename
复制表
要将已有的 table_name 表复制为新表 new_table,包括表结构和数据,请使用以下语句:
CREATE TABLE new_table
AS TABLE table_name;
如果仅复制表结构,不复制数据,请在以上 CREATE TABLE 语句中添加 WITH NO DATA 子句,如下所示:
CREATE TABLE new_table
AS TABLE table_name
WITH NO DATA;
备份和恢复
使用 pg_dump 备份一个数据库
pg_dump -U username -W -F t db_name > output.tar
说明:
-U username: 指定连接 PostgreSQL 数据库服务器的用户。您可以在 username 位置使用自己的用户名。
-W: 强制 pg_dump 在连接到 PostgreSQL 数据库服务器之前提示输入密码。按回车后, pg_dump 会提示输入 postgres 用户密码。
-F : 指定输出文件的格式,它可以是以下格式之一:
c: 自定义格式
d: 目录格式存档
t: tar 文件包
p: SQL 脚本文件
db_name 是要备份的数据库的名字。
output.tar 是输出文件的路径。
使用pg_dumpall备份所有数据库
pg_dumpall -U username > output.sql
使用pg_restore恢复数据库
pg_restore [option...] file_path
pg_restore -d db_name path_to_db_backup_file.tar
使用psql恢复数据库
psql -U username -f path_to_db_backup_file.sql
explain
查看sql执行计划
语法
EXPLAIN [ ( option [, ...] ) ] statement;
option
- analyze 执行命令并显示执行时间以及其他统计信息
- verbose