全量导入导出
全量导入导出功能支持多种资源的数据批量操作,大大提高数据管理效率。
支持的资源类型
系统支持以下 6 种资源的导入导出:
- 网络区域 (NetworkArea)
- 单位 (Unit)
- 部门 (Department)
- 网关 (Gateway)
- 项目 (Project)
- 子网 (Subnet)
导出功能
多 Sheet Excel 导出
导出功能生成包含多个 Sheet 的 Excel 文件:
导出文件.xlsx
├── Sheet1: 网络区域
├── Sheet2: 单位
├── Sheet3: 部门
├── Sheet4: 网关
├── Sheet5: 项目
└── Sheet6: 子网导出字段
每个 Sheet 包含完整的资源字段:
网络区域 Sheet
| 列名 | 说明 |
|---|---|
| ID | 网络区域ID |
| 名称 | 区域名称 |
| 编码 | 区域编码 |
| 描述 | 区域描述 |
单位 Sheet
| 列名 | 说明 |
|---|---|
| ID | 单位ID |
| 名称 | 单位名称 |
| 编码 | 单位编码 |
| 描述 | 单位描述 |
部门 Sheet
| 列名 | 说明 |
|---|---|
| ID | 部门ID |
| 名称 | 部门名称 |
| 编码 | 部门编码 |
| 单位名称 | 所属单位 |
| 上级部门 | 上级部门名称 |
| 描述 | 部门描述 |
网关 Sheet
| 列名 | 说明 |
|---|---|
| ID | 网关ID |
| IP地址 | 网关IP |
| MAC地址 | 网关MAC |
| 网络区域 | 所属网络区域 |
| 描述 | 网关描述 |
项目 Sheet
| 列名 | 说明 |
|---|---|
| ID | 项目ID |
| 名称 | 项目名称 |
| 编码 | 项目编码 |
| 部门 | 所属部门 |
| 单位 | 所属单位 |
| 描述 | 项目描述 |
子网 Sheet
| 列名 | 说明 |
|---|---|
| ID | 子网ID |
| 名称 | 子网名称 |
| CIDR | CIDR表示法 |
| 网关 | 关联网关IP |
| 网络区域 | 所属网络区域 |
| VLAN ID | VLAN标识 |
| 描述 | 子网描述 |
导出 API
GET /api/full-export
Response: Excel文件下载导入功能
导入流程
导入功能采用"预览-确认"的两步流程:
- 上传文件:上传包含数据的 Excel 文件
- 预览验证:系统验证数据并显示预览结果
- 确认导入:确认无误后执行正式导入
智能验证
导入时系统进行多层次的验证:
1. 格式验证
- 检查 Excel 格式是否正确
- 检查必需的 Sheet 是否存在
- 检查列名是否匹配
2. 数据验证
- 网络区域:名称和编码唯一性
- 单位:名称+编码双重验证
- 部门:验证单位存在性,部门名称唯一性
- 网关:IP格式验证,网络区域存在性
- 项目:验证部门存在性,项目名称唯一性
- 子网:CIDR格式验证,网关和网络区域存在性
3. 依赖验证
按照依赖顺序验证:
网络区域 → 单位 → 部门 → 网关 → 项目 → 子网依赖排序
系统自动按依赖关系处理导入顺序:
- 网络区域:无依赖,最先导入
- 单位:无依赖,可并行导入
- 部门:依赖单位,需先导入单位
- 网关:依赖网络区域
- 项目:依赖部门和单位
- 子网:依赖网关和网络区域
双重验证机制
单位资源支持名称+编码双重验证:
- 新建:名称和编码都不存在时创建新记录
- 更新:名称或编码存在时更新现有记录
- 冲突:名称和编码分别匹配不同记录时报错
事务保护
导入过程使用数据库事务:
- 所有资源在一个事务中处理
- 任一资源导入失败则全部回滚
- 确保数据一致性
导入结果报告
导入完成后返回详细的结果报告:
json
{
"success": true,
"summary": {
"total_sheets": 6,
"processed_sheets": 6,
"total_records": 150,
"success_records": 148,
"failed_records": 2
},
"details": {
"network_areas": {
"total": 5,
"created": 3,
"updated": 2,
"failed": 0
},
"units": {
"total": 3,
"created": 2,
"updated": 1,
"failed": 0
},
// ... 其他资源
},
"errors": [
{
"sheet": "部门",
"row": 10,
"message": "单位 '技术部' 不存在"
}
]
}导入 API
预览接口
POST /api/full-import/preview
Content-Type: multipart/form-data
file: Excel文件响应:
json
{
"success": true,
"preview": {
"network_areas": {
"count": 5,
"valid": 5,
"invalid": 0
},
"units": {
"count": 3,
"valid": 3,
"invalid": 0
},
// ... 其他资源
},
"errors": []
}确认导入接口
POST /api/full-import
Content-Type: multipart/form-data
file: Excel文件Excel 模板
下载模板
系统提供标准的导入模板下载:
GET /api/full-import/template
Response: Excel模板文件填写规范
网络区域
| 名称 | 编码 | 描述 |
|---|---|---|
| 办公网络 | office | 办公区域网络 |
| 生产网络 | production | 生产环境网络 |
单位
| 名称 | 编码 | 描述 |
|---|---|---|
| 总公司 | hq | 总部 |
| 分公司1 | branch1 | 第一分公司 |
部门
| 名称 | 编码 | 单位名称 | 上级部门 | 描述 |
|---|---|---|---|---|
| 技术部 | tech | 总公司 | 技术部门 | |
| 研发组 | dev | 总公司 | 技术部 | 研发小组 |
网关
| IP地址 | MAC地址 | 网络区域 | 描述 |
|---|---|---|---|
| 192.168.1.1 | 00:11:22:33:44:55 | 办公网络 | 主网关 |
项目
| 名称 | 编码 | 部门 | 单位 | 描述 |
|---|---|---|---|---|
| 核心系统 | core | 技术部 | 总公司 | 核心业务系统 |
子网
| 名称 | CIDR | 网关 | 网络区域 | VLAN ID | 描述 |
|---|---|---|---|---|---|
| 办公网段 | 192.168.1.0/24 | 192.168.1.1 | 办公网络 | 100 | 办公使用 |
最佳实践
导入前准备
- 数据清理:清理 Excel 中的空行和无效数据
- 格式检查:确保数据格式正确
- 依赖确认:确认依赖的资源已存在或将在同一文件中导入
- 备份数据:导入前备份现有数据
导入策略
- 分批导入:大量数据建议分批导入
- 先预览:总是先使用预览功能检查数据
- 处理错误:根据错误提示修正数据后重新导入
- 验证结果:导入后验证数据完整性
导出策略
- 定期备份:定期导出数据作为备份
- 迁移数据:使用导出功能迁移数据到新环境
- 数据分析:导出数据用于离线分析
- 报表生成:基于导出数据生成报表
常见问题
Q: 导入时提示"依赖资源不存在"
A: 确保依赖的资源(如单位、部门)在同一导入文件中,或已存在于系统中。
Q: 如何更新现有数据?
A: 使用相同的名称/编码,系统会自动识别并更新现有记录。
Q: 导入失败如何回滚?
A: 导入使用事务保护,失败时自动回滚。可以修正数据后重新导入。
Q: 支持哪些 Excel 格式?
A: 支持 .xlsx 格式,不支持 .xls 格式。