accounts/scripts/dump-schema.sh
2026-01-24 23:02:53 +08:00

27 lines
991 B
Bash
Executable File
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
set -euo pipefail
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/_common.sh"
echo ">>> 导出 schema 到 ${SCHEMA_FILE}"
PG_DUMP_BIN="${PG_DUMP_BIN:-pg_dump}"
SERVER_VERSION="$(psql "${DB_URL}" -Atc "SHOW server_version" 2>/dev/null || true)"
SERVER_MAJOR="${SERVER_VERSION%%.*}"
LOCAL_VERSION="$(${PG_DUMP_BIN} --version 2>/dev/null || true)"
LOCAL_MAJOR="$(echo "${LOCAL_VERSION}" | awk '{print $3}' | cut -d. -f1)"
if [ -n "${SERVER_MAJOR}" ] && [ -n "${LOCAL_MAJOR}" ] && [ "${SERVER_MAJOR}" != "${LOCAL_MAJOR}" ]; then
echo "⚠️ pg_dump 版本不匹配server=${SERVER_MAJOR}, local=${LOCAL_MAJOR}),跳过导出"
echo " 可设置 PG_DUMP_BIN 指向匹配版本的 pg_dump"
exit 0
fi
TMP_SCHEMA="/tmp/schema.$$.sql"
${PG_DUMP_BIN} -s -O -x "${DB_URL}" > "${TMP_SCHEMA}"
if [ ! -w "${SCHEMA_FILE}" ]; then
echo "⚠️ ${SCHEMA_FILE} 不可写,已将导出结果保留在 ${TMP_SCHEMA}"
exit 0
fi
mv "${TMP_SCHEMA}" "${SCHEMA_FILE}"