#!/bin/bash # ============================================ # 数据库重建脚本 # 删除所有表并重新初始化 # ============================================ set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # 数据库配置(根据实际情况修改) DB_HOST=${DB_HOST:-localhost} DB_PORT=${DB_PORT:-5432} DB_NAME=${DB_NAME:-lingyue_zhibao} DB_USER=${DB_USER:-postgres} log_info() { echo -e "${GREEN}[INFO]${NC} $1"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; } log_error() { echo -e "${RED}[ERROR]${NC} $1"; } log_title() { echo -e "\n${BLUE}========== $1 ==========${NC}\n"; } # 获取脚本所在目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SQL_DIR="${SCRIPT_DIR}" # 检查 SQL 文件是否存在 check_sql_files() { log_title "检查 SQL 文件" local missing=false for file in init.sql supplement_tables.sql rag_tables.sql; do if [ -f "${SQL_DIR}/${file}" ]; then log_info "找到: ${file}" else log_error "缺失: ${file}" missing=true fi done if [ "$missing" = true ]; then log_error "请确保在 backend/sql 目录下运行此脚本" exit 1 fi } # 删除所有表 drop_all_tables() { log_title "删除所有表" log_warn "这将删除数据库中的所有表和数据!" read -p "是否继续?(yes/no): " confirm if [ "$confirm" != "yes" ]; then log_info "操作已取消" exit 0 fi log_info "开始删除表..." # 删除所有表的 SQL PGPASSWORD=${DB_PASSWORD} psql -h ${DB_HOST} -p ${DB_PORT} -U ${DB_USER} -d ${DB_NAME} <&1 if [ $? -eq 0 ]; then log_info "RAG 表初始化成功" else log_warn "RAG 表初始化可能失败(如果未安装 pgvector 扩展是正常的)" fi } # 验证表创建 verify_tables() { log_title "验证表创建" log_info "查询所有表..." PGPASSWORD=${DB_PASSWORD} psql -h ${DB_HOST} -p ${DB_PORT} -U ${DB_USER} -d ${DB_NAME} <