38 lines
1.8 KiB
Bash
38 lines
1.8 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# 在 SHZ 测试 HighGo 数据库执行外部岗位导入迁移。
|
||
|
|
# 仅支持测试环境;迁移 SQL 自身为事务性、可重复执行的 migration。
|
||
|
|
set -Eeuo pipefail
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd -P)"
|
||
|
|
PROJECT_DIR="$(cd -- "$SCRIPT_DIR/.." && pwd -P)"
|
||
|
|
MIGRATION_FILE="${MIGRATION_FILE:-$PROJECT_DIR/sql/migration_external_job_import.sql}"
|
||
|
|
PASSWORD_FILE="${HIGHGO_TEST_PASSWORD_FILE:-${HIGHGO_PASSWORD_FILE:-$PROJECT_DIR/.codex/skills/query-shz-highgo/.password}}"
|
||
|
|
TEST_SSH_HOST="${HIGHGO_TEST_SSH_HOST:-root@47.111.103.66}"
|
||
|
|
TEST_PSQL_PATH="${HIGHGO_TEST_PSQL_PATH:-/opt/highgo/hgdb-4.5/bin/psql}"
|
||
|
|
TEST_DB_HOST="${HIGHGO_TEST_DB_HOST:-127.0.0.1}"
|
||
|
|
TEST_DB_PORT="${HIGHGO_TEST_DB_PORT:-5866}"
|
||
|
|
TEST_DB_NAME="${HIGHGO_TEST_DB_NAME:-highgo}"
|
||
|
|
TEST_DB_USER="${HIGHGO_TEST_DB_USER:-sysdba}"
|
||
|
|
|
||
|
|
[[ "${CONFIRM_TEST_MIGRATION:-}" == "yes" ]] || {
|
||
|
|
echo '为防误操作,请使用 CONFIRM_TEST_MIGRATION=yes 执行测试数据库迁移。' >&2
|
||
|
|
exit 2
|
||
|
|
}
|
||
|
|
|
||
|
|
[[ -r "$MIGRATION_FILE" ]] || { echo "迁移文件不可读: $MIGRATION_FILE" >&2; exit 2; }
|
||
|
|
[[ -r "$PASSWORD_FILE" ]] || { echo '测试数据库密码文件不可读。' >&2; exit 2; }
|
||
|
|
|
||
|
|
for command in ssh; do
|
||
|
|
command -v "$command" >/dev/null 2>&1 || { echo "缺少必要命令: $command" >&2; exit 2; }
|
||
|
|
done
|
||
|
|
|
||
|
|
printf '执行测试库迁移:%s\n' "$(basename "$MIGRATION_FILE")"
|
||
|
|
{
|
||
|
|
cat "$PASSWORD_FILE"
|
||
|
|
printf '\n'
|
||
|
|
cat "$MIGRATION_FILE"
|
||
|
|
} | ssh -o BatchMode=yes -o ConnectTimeout=20 "$TEST_SSH_HOST" \
|
||
|
|
"IFS= read -r PGPASSWORD; export PGPASSWORD; exec '$TEST_PSQL_PATH' -X --no-psqlrc -h '$TEST_DB_HOST' -p '$TEST_DB_PORT' -U '$TEST_DB_USER' -d '$TEST_DB_NAME' -v ON_ERROR_STOP=1 -f -"
|
||
|
|
|
||
|
|
printf '测试库迁移已完成。请使用只读查询脚本验证结果。\n'
|