#!/usr/bin/env bash # 本地 PostgreSQL 16 初始化脚本(弃用 Docker,使用本机 Homebrew PG16) # 创建 aiaudit 角色与数据库,并安装所需扩展(TimescaleDB / pgvector / btree_gist)。 # # 前置:已通过 Homebrew 安装并启动 postgresql@16、timescaledb、pgvector。 # 用法:bash infra/postgres/setup_local.sh set -euo pipefail DB_NAME="${DB_NAME:-aiaudit}" DB_USER="${DB_USER:-aiaudit}" DB_PASSWORD="${DB_PASSWORD:-aiaudit_dev}" # 定位本地 PG16 的 psql(Homebrew) PG_BIN="$(brew --prefix postgresql@16)/bin" export PATH="$PG_BIN:$PATH" echo "==> 使用 psql: $(which psql)" # 以当前系统用户连接默认库(Homebrew PG 默认信任本地超级用户) psql postgres < 安装扩展到数据库 ${DB_NAME}" # pgvector 与 btree_gist 为必需;TimescaleDB 为可选(macOS 本地常因编译问题装不上, # 生产 Linux 环境再启用)。缺失 timescaledb 不影响功能,仅少了超表分区/压缩优化。 psql -d "${DB_NAME}" <<'SQL' CREATE EXTENSION IF NOT EXISTS vector; CREATE EXTENSION IF NOT EXISTS btree_gist; DO $$ BEGIN IF EXISTS (SELECT 1 FROM pg_available_extensions WHERE name = 'timescaledb') THEN CREATE EXTENSION IF NOT EXISTS timescaledb; RAISE NOTICE 'TimescaleDB 已启用'; ELSE RAISE NOTICE 'TimescaleDB 不可用,跳过(本地开发可忽略)'; END IF; END$$; SQL echo "==> 完成。扩展清单:" psql -d "${DB_NAME}" -c "SELECT extname, extversion FROM pg_extension ORDER BY extname;"