命令行下操作 PostgreSQL 常用命令

记录一下在命令行下对 PostgreSQL 数据库的一些常用操作。

假设 PostgreSQL 容器名称是 my_postgres_container

进入容器:

docker exec -it my_postgres_container bash

进入 PostgreSQL 命令行终端

在容器的 shell 中输入以下命令(默认用户通常是 postgres):

psql -U postgres
  • 如果你的数据库有密码且没有配置免密,它会提示你输入密码。
  • 由于容器内本地连接免密,这里不需要输入密码。
  • 如果你要连接特定的数据库,可以使用:psql -U postgres -d 数据库名

查看数据库和表(常用命令)

进入 psql(看到 postgres=# 或类似提示符)后,使用以下元命令(以反斜杠 \ 开头):

  1. 列出所有数据库:
\l
  1. 切换/连接到指定数据库
\c 你的数据库名
  1. 查看当前数据库下的所有表:
\dt
  1. 查看某个表的结构(字段、类型、主键等):
\d 表名

数据的增删改查 (CRUD)

使用标准的 SQL 语句操作数据。注意:SQL 语句必须以分号 ; 结尾。

假设你有一个表叫 users,字段有 id, name, email。

  1. 查询数据 (Read)

查询所有数据:

SELECT * FROM users;

带条件查询:

SELECT * FROM users WHERE name = '张三';
  1. 插入数据 (Create)

插入一条数据:

INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com');
  1. 修改数据 (Update)
UPDATE users SET email = 'new_email@example.com' WHERE name = '李四';
  1. 删除数据 (Delete)
DELETE FROM users WHERE name = '李四';

退出

当你操作完成后,输入以下命令退出 psql 终端:

\q

备份和恢复

备份和恢复推荐在宿主机完成。

  1. 备份

备份整个数据库:

# 格式:docker exec -t [容器名] pg_dump -U [用户名] [数据库名] > [宿主机保存路径]

docker exec -t my_postgres_container pg_dump -U postgres my_db_name > my_backup.sql

备份单张表:

# 加上 -t 参数指定表名
docker exec -t my_postgres_container pg_dump -U postgres -t table_name my_db_name > table_name_backup.sql
  1. 备份选项

只备份表结构(不包含数据):-s (schema-only)

docker exec -t my_postgres_container pg_dump -U postgres -s my_db_name > schema.sql

只备份数据(不包含建表语句):-a (data-only)

docker exec -t my_postgres_container pg_dump -U postgres -a my_db_name > data.sql

携带清理语句: -c (clean)

# -c 会在备份文件中自动插入 DROP TABLE IF EXISTS 语句
docker exec -t my_postgres_container pg_dump -U postgres -c -t users my_db_name > users_full_backup.sql
  1. 恢复

有了备份文件(.sql),恢复数据通常使用 psql命令。

恢复整个数据库:

# 格式:cat [备份文件] | docker exec -i [容器名] psql -U [用户名] -d [数据库名]

cat my_backup.sql | docker exec -i my_postgres_container psql -U postgres -d my_db_name

标题:命令行下操作 PostgreSQL 常用命令

原文链接:https://beltxman.com/4626.html

若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。

发表评论

您的电子邮箱地址不会被公开。

Scroll to top