#!/bin/bash # 验证数据库导入结果 DB_HOST="192.168.58.20" DB_USER="gongxiangpan" DB_PASS="gongxiangpan123" DB_NAME="lobechat" echo "==========================================" echo " 数据库验证工具" echo "==========================================" echo "" export PGPASSWORD=$DB_PASS echo "[1] 检查数据库连接..." if psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "SELECT 1" > /dev/null 2>&1; then echo "✅ 连接成功" else echo "❌ 连接失败" exit 1 fi echo "" echo "[2] 数据库信息..." echo "数据库大小:" psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "SELECT pg_size_pretty(pg_database_size('$DB_NAME'));" echo "" echo "[3] 表列表和记录数..." psql -h $DB_HOST -U $DB_USER -d $DB_NAME << 'EOF' SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size, (SELECT COUNT(*) FROM information_schema.columns WHERE table_name = t.tablename) AS columns FROM pg_tables t WHERE schemaname = 'public' ORDER BY tablename; EOF echo "" echo "[4] 主要表记录数..." for table in users materials categories scenes material_likes system_settings; do if psql -h $DB_HOST -U $DB_USER -d $DB_NAME -t -c "SELECT 1 FROM information_schema.tables WHERE table_name='$table'" | grep -q 1; then COUNT=$(psql -h $DB_HOST -U $DB_USER -d $DB_NAME -t -c "SELECT COUNT(*) FROM \"$table\"" 2>/dev/null | xargs) if [ ! -z "$COUNT" ]; then printf " %-20s : %s 条记录\n" "$table" "$COUNT" fi fi done echo "" echo "[5] 最近的数据..." echo "最近创建的用户:" psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "SELECT id, username, email, created_at FROM users ORDER BY created_at DESC LIMIT 5;" 2>/dev/null || echo " 表不存在或无数据" echo "" echo "最近上传的素材:" psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "SELECT id, title, created_at FROM materials ORDER BY created_at DESC LIMIT 5;" 2>/dev/null || echo " 表不存在或无数据" echo "" echo "[6] 索引检查..." psql -h $DB_HOST -U $DB_USER -d $DB_NAME << 'EOF' SELECT tablename, indexname, indexdef FROM pg_indexes WHERE schemaname = 'public' ORDER BY tablename, indexname; EOF echo "" echo "[7] 外键约束..." psql -h $DB_HOST -U $DB_USER -d $DB_NAME << 'EOF' SELECT tc.table_name, kcu.column_name, ccu.table_name AS foreign_table_name, ccu.column_name AS foreign_column_name FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name WHERE tc.constraint_type = 'FOREIGN KEY' ORDER BY tc.table_name; EOF echo "" echo "==========================================" echo " 验证完成" echo "==========================================" echo ""