#!/bin/bash # 设备模块数据库脚本执行 # 执行前请确保数据库服务正在运行 SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" DDL_FILE="$PROJECT_DIR/module-mdm/src/main/resources/db/migration/V20260325__create_equipment_tables.sql" MIGRATION_FILE="$PROJECT_DIR/module-mdm/src/main/resources/db/migration/V20260326__migrate_equipment_data.sql" # 数据库连接参数 DB_HOST="localhost" DB_PORT="5432" DB_NAME="ether_pms" DB_USER="chiguyong" echo "==========================================" echo "设备模块数据库脚本执行" echo "==========================================" # 检查psql是否可用 if ! command -v psql &> /dev/null; then echo "错误: psql 未安装或不在PATH中" echo "请安装PostgreSQL客户端: brew install postgresql" exit 1 fi # 检查DDL文件是否存在 if [ ! -f "$DDL_FILE" ]; then echo "错误: DDL文件不存在: $DDL_FILE" exit 1 fi # 1. 执行DDL脚本 echo "" echo "[1/2] 执行设备表DDL脚本..." echo "文件: $DDL_FILE" echo "" psql -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -U "$DB_USER" -f "$DDL_FILE" if [ $? -eq 0 ]; then echo "" echo "✅ DDL脚本执行成功" else echo "" echo "❌ DDL脚本执行失败" exit 1 fi # 2. 询问是否执行数据迁移 echo "" echo "==========================================" read -p "是否执行数据迁移脚本? (y/N): " CONFIRM_MIGRATION echo "==========================================" if [ "$CONFIRM_MIGRATION" = "y" ] || [ "$CONFIRM_MIGRATION" = "Y" ]; then if [ ! -f "$MIGRATION_FILE" ]; then echo "错误: 迁移文件不存在: $MIGRATION_FILE" exit 1 fi echo "" echo "[2/2] 执行数据迁移脚本..." echo "文件: $MIGRATION_FILE" echo "" # 注意:迁移脚本中的函数需要手动调用 # 这里只执行函数创建,实际迁移需要单独执行 psql -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -U "$DB_USER" -f "$MIGRATION_FILE" if [ $? -eq 0 ]; then echo "" echo "✅ 迁移脚本执行成功" echo "" echo "注意: 实际数据迁移需要执行以下SQL:" echo " SELECT migrate_equipment_from_space_node();" echo "" echo "如需回滚,执行:" echo " SELECT rollback_equipment_migration();" else echo "" echo "❌ 迁移脚本执行失败" exit 1 fi else echo "" echo "跳过了数据迁移" fi echo "" echo "==========================================" echo "脚本执行完成" echo "=========================================="