mac安装PostgreSQL18笔记

参考资料

复制代码
​

中文文档
http://www.postgres.cn/docs/current/ddl-identity-columns.html
英文文档
https://www.rockdata.net/tutorial/toc/
资料大全
https://gitcode.com/gh_mirrors/aw/awesome-postgres

​

PostgreSQL官网下载

PostgreSQL: Downloadshttps://www.postgresql.org/download/

我用homebrew下载安装失败,于是去官网下载安装,官方推荐的是postgres.app

下载可视化工具pgadmin4

DownloadpgAdmin - PostgreSQL Tools for Windows, Mac, Linux and the Webhttps://www.pgadmin.org/download/pgadmin-4-macos/

配置系统环境变量

psql环境变量

用find /usr -name "psql" 2>/dev/null查找psql位置,发现如下

/Applications/Postgres.app/Contents/Versions/18/bin/psql

打开 ~/.zshrc

输入

复制代码
export PATH="/Applications/Postgres.app/Contents/Versions/18/bin:$PATH"

最后source ~/.zshrc

导入现有数据

如果有sql文件,可用下方命令导入

复制代码
psql -U postgres -d 你的数据库名 -f /Users/sin/ballpen.sql;

比如
psql -U postgres -d sin -f /Users/sin/ballpen.sql;

ballpen.sql内容如下

复制代码
-- =============================================
-- ballpen 表(圆珠笔表)
-- 用于存储圆珠笔产品信息
-- =============================================

-- 创建数据库(如需)
-- CREATE DATABASE ballpen_shop;

-- 切换到目标数据库后执行:
-- \c ballpen_shop

CREATE TABLE IF NOT EXISTS ballpen (
    id              SERIAL          PRIMARY KEY,                          -- 主键ID
    brand           VARCHAR(100)    NOT NULL,                             -- 品牌
    model           VARCHAR(200)    NOT NULL,                             -- 型号
    color           VARCHAR(50)     DEFAULT 'black',                      -- 笔杆颜色
    ink_color       VARCHAR(50)     DEFAULT 'blue',                       -- 墨水颜色
    tip_size        NUMERIC(3,1)    NOT NULL CHECK (tip_size > 0),        -- 笔尖粗细(mm),如 0.5, 0.7, 1.0
    price           NUMERIC(10,2)   NOT NULL CHECK (price >= 0),          -- 价格(元)
    stock           INTEGER         NOT NULL DEFAULT 0 CHECK (stock >= 0), -- 库存数量
    description     TEXT,                                                  -- 商品描述
    is_active       BOOLEAN         DEFAULT TRUE,                          -- 是否上架
    created_at      TIMESTAMP       DEFAULT CURRENT_TIMESTAMP,             -- 创建时间
    updated_at      TIMESTAMP       DEFAULT CURRENT_TIMESTAMP              -- 更新时间
);

-- 索引
CREATE INDEX IF NOT EXISTS idx_ballpen_brand      ON ballpen (brand);
CREATE INDEX IF NOT EXISTS idx_ballpen_tip_size   ON ballpen (tip_size);
CREATE INDEX IF NOT EXISTS idx_ballpen_is_active  ON ballpen (is_active);

-- 更新时间触发器(自动更新 updated_at)
CREATE OR REPLACE FUNCTION update_ballpen_timestamp()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = CURRENT_TIMESTAMP;
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

DROP TRIGGER IF EXISTS trg_ballpen_updated_at ON ballpen;
CREATE TRIGGER trg_ballpen_updated_at
    BEFORE UPDATE ON ballpen
    FOR EACH ROW
    EXECUTE FUNCTION update_ballpen_timestamp();

-- =============================================
-- 示例数据
-- =============================================
INSERT INTO ballpen (brand, model, color, ink_color, tip_size, price, stock, description) VALUES
    ('Pilot',   'BL-G2-5',   'black', 'blue',   0.5,  8.50,  100, 'Pilot 百乐 BL-G2-5 按动中性笔 0.5mm'),
    ('Pilot',   'BL-G2-7',   'black', 'blue',   0.7,  8.50,   80, 'Pilot 百乐 BL-G2-7 按动中性笔 0.7mm'),
    ('Uni',     'UM-100-05', 'white', 'black',  0.5,  6.00,  200, 'Uni 三菱 UM-100 中性笔 0.5mm'),
    ('Uni',     'UMN-155',   'black', 'blue',   0.5, 12.00,   50, 'Uni 三菱 UMN-155 按动中性笔 0.5mm'),
    ('M&G',     'AGPJ5501',  'blue',  'blue',   0.5,  3.50,  500, '晨光 AGPJ5501 按动中性笔 0.5mm'),
    ('Zebra',   'JJ15',      'black', 'black',  0.5,  7.00,  150, 'Zebra 斑马 JJ15 按动中性笔 0.5mm'),
    ('Schneider', '805',     'black', 'blue',   0.6, 15.00,   30, 'Schneider 施耐德 805 圆珠笔 0.6mm'),
    ('Parker',  'IM',        'matte', 'blue',   1.0, 198.00,  10, 'Parker 派克 IM 系列圆珠笔 1.0mm');

默认导入至public,如果想改成别的,比如shop,可以先手动创建shop表

创建shop表

复制代码
CREATE SCHEMA IF NOT EXISTS shop;

然后把默认表设置为shop
SET search_path TO shop;

导入sql文件
\i /Users/sin/ballpen.sql
相关推荐
余槐i12 小时前
200万行表加索引锁死写入:PostgreSQL CONCURRENTLY 的三类等待与重建路径
数据库·postgresql·性能优化·索引·explain
杨云龙UP17 小时前
PostgreSQL 四种常见部署模式快速理解:单实例、流复制、repmgr、Patroni
linux·运维·数据库·postgresql·流复制·高可用ha
l1t17 小时前
DeepSeek总结的PostgreSQL 19回退会一直继续,直到士气好转
数据库·postgresql
胖头鱼的鱼缸(尹海文)1 天前
胖头鱼的技术专栏-474 从能跑到能上线:PG SplitJSON 0.2.0 和 0.1.0 差在哪(20261008)
postgresql·json
云贝贝贝1 天前
PostgreSQL 分区表:从设计到运维,大表不再卡
运维·数据库·postgresql
Knight_AL2 天前
PostgreSQL Docker 数据库备份:pg_dump 与 SQL 格式备份的区别
数据库·docker·postgresql
长春的KAKA2 天前
GitLab 项目页面报 500 错误的完整修复记录:PostgreSQL 数据库损坏、统计表缺失及数据库迁移
数据库·postgresql·gitlab
IvorySQL2 天前
VACUUM FULL 之后 ROWID 就废了? IvorySQL 兼容性实测
数据库·人工智能·ai·postgresql·开源
瀚高PG实验室2 天前
HGHAC集群VIP-MANAGER挂载的VIP消失
数据库·postgresql·瀚高数据库
jianjinwssy2 天前
PostgreSQL 进阶:索引、MVCC、VACUUM 与 WAL
数据库·postgresql