5.4 KiB
5.4 KiB
QAUP 数据导出导入指南
概述
本指南介绍如何从现有 QAUP 数据库导出数据,并在新环境中导入这些数据。我们采用分层数据管理策略,将数据分为不同类别,以便灵活管理。
数据分类
1. 系统基础配置数据(必需)
- 包含表:
sys_config,sys_dict_type,sys_dict_data,sys_dept,sys_post,sys_role,sys_menu,sys_user,sys_user_role,sys_user_post,sys_role_menu,sys_role_dept,sys_notice - 用途: 系统运行的基础配置,包括菜单、角色、权限等
- 特点: 必须导入,否则系统无法正常运行
2. 业务基础数据(推荐)
- 包含表:
sys_vehicle_type,airport_areas,spatial_rules,spatial_rule_vehicle_types,transport_routes - 用途: 业务配置数据,如车辆类型、机场区域、空间规则等
- 特点: 建议导入,包含实际业务配置
3. 示例数据(可选)
- 包含表:
sys_vehicle_info - 用途: 示例车辆信息,用于演示和测试
- 特点: 可选导入,生产环境可能不需要
4. 实时数据(不导出)
- 包含表:
vehicle_locations,vehicle_trajectories,vehicle_commands,geofence_events,uv_violation_events,sys_logininfor,sys_oper_log,sys_job_log等 - 用途: 实时运行数据、日志等
- 特点: 不导出,新环境启动后自动生成
数据导出
前提条件
- 安装 PostgreSQL 客户端工具(包含
pg_dump) - 能够连接到现有的 QAUP 数据库
- 有足够的磁盘空间存储导出文件
导出步骤
1. 设置环境变量
export DB_HOST=localhost # 数据库主机
export DB_PORT=5432 # 数据库端口
export DB_NAME=qaup # 数据库名称
export DB_USER=postgres # 数据库用户
export EXPORT_DIR=./export # 导出目录
2. 执行导出(推荐方式)
cd deploy/docker/postgres
./db-manager.sh export-initial
这将生成以下文件:
01_system_data.sql- 系统基础配置数据02_business_data.sql- 业务基础数据03_sample_data.sql- 示例数据initial_data_complete.sql- 合并的完整初始数据文件
3. 其他导出选项
# 导出分层初始数据(推荐)
./db-manager.sh export-initial
# 导出完整数据库
./db-manager.sh export-all
# 仅导出表结构
./db-manager.sh export-schema
# 数据库备份
./db-manager.sh backup
数据导入
方法一:使用合并文件(推荐)
- 将
initial_data_complete.sql复制到deploy/docker/postgres/initial_data.sql - 启动 Docker 容器,数据会自动导入
cp export/initial_data_complete.sql deploy/docker/postgres/initial_data.sql
./deploy.sh install
方法二:分层导入
如果需要选择性导入,可以分别处理各层数据:
# 1. 复制系统基础数据(必需)
cp export/01_system_data.sql deploy/docker/postgres/initial_data.sql
# 2. 可选:追加业务数据
cat export/02_business_data.sql >> deploy/docker/postgres/initial_data.sql
# 3. 可选:追加示例数据
cat export/03_sample_data.sql >> deploy/docker/postgres/initial_data.sql
# 4. 启动容器
./deploy.sh install
方法三:手动导入
如果容器已经运行,可以手动导入数据:
# 进入数据库容器
docker exec -it qaup-postgres psql -U postgres -d qaup
# 在容器内执行
\i /docker-entrypoint-initdb.d/initial_data.sql
验证导入
1. 检查表数据
-- 检查用户表
SELECT COUNT(*) FROM sys_user;
-- 检查菜单表
SELECT COUNT(*) FROM sys_menu;
-- 检查车辆类型表
SELECT COUNT(*) FROM sys_vehicle_type;
-- 检查机场区域表
SELECT COUNT(*) FROM airport_areas;
2. 测试登录
- 使用导出的管理员账号登录系统
- 检查菜单和权限是否正确显示
- 验证业务功能是否正常
注意事项
1. 密码处理
- 导出的用户密码是加密的,可以直接使用
- 如果需要重置密码,请在系统中操作
2. 序列值
- 导出脚本会自动更新序列值
- 确保新插入的数据不会产生主键冲突
3. 外键约束
- 导入时会临时禁用触发器
- 导入完成后会重新启用
4. 数据一致性
- 建议在业务低峰期进行导出
- 确保导出过程中数据不被修改
故障排除
1. 连接失败
# 检查数据库连接
pg_isready -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME
2. 权限问题
# 确保用户有足够权限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO your_user;
3. 导入失败
- 检查 SQL 文件语法
- 查看 PostgreSQL 日志
- 确认表结构已正确创建
4. 数据不完整
- 检查导出日志
- 验证源数据库数据完整性
- 重新执行导出过程
最佳实践
- 定期备份: 建议定期导出数据作为备份
- 版本控制: 将初始数据文件纳入版本控制
- 环境隔离: 不同环境使用不同的数据集
- 测试验证: 在测试环境先验证导入过程
- 文档更新: 及时更新数据结构变更文档
自动化脚本
可以创建自动化脚本定期导出数据:
#!/bin/bash
# auto-export.sh
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="./backups/$DATE"
mkdir -p "$BACKUP_DIR"
export EXPORT_DIR="$BACKUP_DIR"
./export-data.sh -i
echo "数据导出完成: $BACKUP_DIR"
这样可以确保始终有最新的数据备份可用于新环境部署。