当前位置: 首页 > news >正文

PostgreSQL基操

常见数据库管理系统(DBMS) 对比表

数据库系统类型主要特点适用场景开源/商业优势劣势
PostgreSQL关系型数据库 (RDBMS)标准SQL支持、扩展性强、支持GIS、JSONWeb应用、大数据分析、金融、电商开源功能最全的开源关系库,事务一致性强,扩展性好写入性能比MySQL略弱,学习曲线较陡
MySQL / MariaDB关系型数据库 (RDBMS)易用、读写性能高、生态广Web系统、CMS、OLTP开源(MySQL有商业版)部署简单、社区庞大、性能优良高级功能(如窗口函数)支持较晚,复杂SQL性能不如Postgres
Oracle Database关系型数据库 (RDBMS)强大的事务处理、分布式、容灾能力银行、电信、ERP、核心业务系统商业企业级特性最丰富,稳定性强授权费用高、闭源
Microsoft SQL Server关系型数据库 (RDBMS)与Windows生态整合好,BI工具丰富企业内部系统、办公系统商业易与微软产品集成,管理工具友好跨平台支持有限,费用高
MongoDB文档型 NoSQLJSON文档存储、灵活schema、水平扩展大数据、日志存储、物联网开源(有商业支持)数据模型灵活,横向扩展好不适合强一致性事务型系统
Redis内存型 NoSQLKey-Value存储、极高性能、支持持久化缓存、实时统计、消息队列开源毫秒级响应,适合高并发数据量过大时成本高,不适合作为主库
Cassandra列式 NoSQL去中心化、强大的分布式扩展性大规模日志、物联网、大数据分析开源高可用、无单点故障,水平扩展优越查询语法有限,不适合复杂关
  • 如果你偏向 开源关系型数据库,推荐 PostgreSQLMySQL/MariaDB
  • 如果你偏向 企业级高可用系统,推荐 OracleSQL Server
  • 如果你需要 灵活/大数据/高并发,考虑 MongoDBRedisCassandra

为什么有人选 MySQL,有人选 PostgreSQL?

1、选择 MySQL 的原因

  • 上手快、生态成熟
  • 轻量级 Web 应用多
  • 开发者熟悉度高(PHP、Java Web 常见)
  • 云服务和托管服务支持广

2、选择 PostgreSQL 的原因

  • 功能更强大,SQL 更接近标准
  • 更适合复杂查询、大数据分析
  • 对数据一致性要求高(金融、政企)
  • JSONB + 关系型结合,能当 混合数据库
  • 开源独立,不受 Oracle 掌控

一、什么是 PostgreSQL

  • PostgreSQL(简称 PG)是一个 开源的关系型数据库管理系统(RDBMS)。
  • 它的特点是:功能强大、遵循 SQL 标准、支持高度扩展
  • 有时被称为 “世界上最先进的开源数据库”

主要特性:

  • 事务支持完整(ACID)
  • 复杂 SQL 能力强(窗口函数、递归查询、CTE 等)
  • 支持 JSON/NoSQL(可以当作文档数据库用)
  • 高度可扩展(可以自定义函数、类型、索引方法)
  • 社区开源,不属于某家公司(MySQL 属于 Oracle)

二、连接与基本操作(命令行)

2.1 连接数据库

psql -U 用户名 -d 数据库名

2.2 指定主机和端口

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

2.3 执行脚本文件

psql -U postgres -d chatbi -f data.sql > log.txt 2>&1

二、psql 内部命令

(以反斜杠 \ 开头)

命令作用
\l列出所有数据库
\c 数据库名切换数据库
\dn列出所有 schema
\dt列出当前 schema 的表
\dt schema.*列出指定 schema 的表
\d 表名查看表结构
\d+ 表名查看表结构和存储信息
\di查看索引
\dv查看视图
\df查看函数
\du查看所有用户
\x切换扩展显示(结果纵向展示)
\o 文件路径将输出写入文件(再用 \o 关闭)
\i 文件路径执行脚本文件
\q退出 psql

三、SQL 常用命令

-- 当前 schema
SHOW search_path;-- 设置默认 schema
SET search_path TO chatbi;-- 查看当前用户
SELECT current_user;-- 查看当前数据库
SELECT current_database();-- 查询前 10 行
SELECT * FROM 表名 LIMIT 10;-- 插入数据
INSERT INTO 表名 (col1, col2) VALUES ('a', 'b');-- 更新数据
UPDATE 表名 SET col1 = 'new' WHERE id = 1;-- 删除数据
DELETE FROM 表名 WHERE id = 1;-- 创建备份表
CREATE TABLE 表名_backup AS SELECT * FROM 表名;

3.1 Database与Schema

PostgreSQL 里有两个层级

  1. 数据库(Database)

    • 就像一个大的“文件夹”。
    • 每个数据库是相互独立的,里面的表、函数、数据彼此隔离。
    • 你连接时用 \c 数据库名,就是切换到另一个文件夹。

    👉 一个 PostgreSQL 实例里可以有很多数据库,比如:

    • chatbi
    • postgres
    • testdb

  1. 模式(Schema)
    • 数据库里面还可以再分“子文件夹”,这就是 schema
    • schema 用来组织表(tables)、视图(views)、函数等对象。
    • 你可以有多个 schema,例如:
      • chatbi 数据库中:有 publicchatbilogs 等 schema。
    • 表的全名写法是:schema.table,比如:chatbi.users

两个命令的区别

  • \c chatbi

    👉 切换到 chatbi 数据库(一个大的文件夹)。

  • SET search_path TO chatbi;

    👉 在 当前数据库 里,告诉 SQL 引擎:如果我写 SELECT * FROM users;,默认去 chatbi.users 查,而不是 public.users

    (只是在数据库里换“默认子文件夹”而已,没有跳到别的数据库。)


举例

假设 PostgreSQL 里有:

  • 数据库:chatbi
    • 模式:publicchatbi
      • 表:public.userschatbi.users

如果你连接进去:

psql -U postgres -d chatbi
  1. 不设置 search_path:

    SELECT * FROM users;
    

    → 默认会查 public.users

  2. 设置 search_path:

    SET search_path TO chatbi;
    SELECT * FROM users;
    

    → 现在会查 chatbi.users

  3. 切换数据库:

    \c postgres
    

    → 你现在已经跳到 另一个数据库 了,前面那个 chatbi 数据库里的表就完全看不到了。


✅ 总结一句话:

  • \c:换数据库(大文件夹)。
  • SET search_path:换 schema(小文件夹),只在当前数据库里有效。

四、实用技巧

  • 执行 SQL 文件并保存日志

    psql -U postgres -d chatbi -f data.sql > run.log 2>&1
    
  • 只导出数据到 CSV

    \copy 表名 TO '/tmp/表名.csv' CSV HEADER;
    
  • 从 CSV 导入数据

    \copy 表名 FROM '/tmp/表名.csv' CSV HEADER;
    

这份速查表涵盖了 连接库 → 浏览库结构 → 操作表 → 备份/导入导出 → 日志保存 的常见需求。

4.1 保存SQL 的执行结果日志

在 psql 里:

\o /home/0905log.txt
\i /data/chatbi.txt
\o

\o 只会捕获 SQL 的执行结果(查询结果、确认信息),不会捕获 psql 客户端本身的错误输出

  • 比如 SELECT * FROM 表; 的结果会进日志
  • 但如果表不存在导致 ERROR: relation "表" does not exist,这个报错信息默认走 stderr,不会写进 \o

\i\o 的方式执行,那错误信息只能显示在屏幕,不会进文件

4.2 保存所有输出(推荐)

在 shell 里执行


psql -U postgres -d chatbi -f chatbi.txt > /home/0905log.txt 2>&1
  • > 保存标准输出(stdout)

  • 2>&1 把错误输出(stderr)也一起写入文件

    这样结果和报错都会写进 0905log.txt

http://www.dtcms.com/a/594036.html

相关文章:

  • 光纤传输20公里的音频、USB光纤传输一体机深度解析
  • DIC多相机协同方案在复杂结构360°全景形貌与变形场检测中的应用研究
  • 发布建设网站一个优秀的个人网站
  • 做网站是干什么用的广州竞价托管公司
  • 梧州网站建设服务商电子商务网站建设
  • 做婚恋网站挣钱吗工商营业执照官网
  • 【ESP32接入最新国产豆包大模型教程】
  • 股指期货和融资融券:对冲交易的两大工具详解
  • 【javaEE】多线程--认识线程、多线程
  • 网站做淘宝客排名会掉吗重庆新闻频道直播在线观看
  • 专业建站流程佛山百度网站快速排名
  • 万能视频解析接口网站怎么做有没有专门做根雕的网站
  • 做网站定金一般多少个人网站seo
  • 青岛营销型网站设计公司开网站做外贸
  • 中国购物网站大全排名Wordpress右侧返回顶部按钮
  • 花都网站建设公司公众号平台网页版登录入口
  • 基于动态规划的潜能觉醒数学模型
  • 中文网站建设和英文网站建设的区别微信公众平台绑定网站
  • 百度站长网站文件验证公司基本介绍模版
  • iis 网站打不开如何做好一个外贸进网站的编辑
  • next.js学习——react入门
  • Java【缓存设计】定时任务+分布式锁实战:Redis vs Redisson实现状态自动扭转以及全量刷新预热机制
  • 缓存更新策略
  • 网站海外推广方案品牌策划公司的市场
  • 大潮建设集团有限公司 网站h5的制作步骤
  • 河中跳房子(信息学奥赛一本通- P1247)
  • Julia 日期和时间
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P07-11 实现自动运行
  • 培训人员网站建设龙岗网站开发公司
  • 【经验分享】Genio 520/Genio720未使用引脚处理方法