Files
InternalAuditInterprise/infra/postgres/setup_local.sh
T
2026-06-16 00:38:57 +08:00

52 lines
1.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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 的 psqlHomebrew
PG_BIN="$(brew --prefix postgresql@16)/bin"
export PATH="$PG_BIN:$PATH"
echo "==> 使用 psql: $(which psql)"
# 以当前系统用户连接默认库(Homebrew PG 默认信任本地超级用户)
psql postgres <<SQL
DO \$\$
BEGIN
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${DB_USER}') THEN
CREATE ROLE ${DB_USER} LOGIN PASSWORD '${DB_PASSWORD}';
END IF;
END
\$\$;
SELECT 'CREATE DATABASE ${DB_NAME} OWNER ${DB_USER}'
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${DB_NAME}')\gexec
SQL
echo "==> 安装扩展到数据库 ${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;"