# read_check_project **Repository Path**: xielu0813/read_check_project ## Basic Information - **Project Name**: read_check_project - **Description**: excel数据导入数据库,检查,错误反馈 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-05 - **Last Updated**: 2025-08-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据导入验证系统 ## 项目概述 这是一个用于 Excel 数据导入、验证和上传到达梦(DM)数据库的系统。系统能够读取 Excel 文件中的多个工作表,根据预定义规则验证数据的合法性,并将验证通过的数据映射到对应的数据库表中。同时,系统还会记录验证状态信息,方便用户追踪数据处理情况。 ## 目录结构 ``` read_check_2/ ├── MAP_INFO.py # Excel字段到数据库表字段的映射配置 ├── UPLOAD_RULES.py # 数据上传规则配置(追加/替换) ├── VALIDATION_RULES.py # 数据验证规则定义 ├── dm_connection.py # 达梦数据库连接模块 ├── excel_to_dm.py # 主程序入口,Excel数据处理与导入 ├── upload_to_sql.py # 数据上传到数据库的核心逻辑 ├── validator.py # 数据验证模块 └── 榆林最新测试数据.xlsx # 测试数据文件(示例) ``` ## 系统架构与工作流程 系统采用模块化设计,主要流程如下: 1. **数据读取**:通过`excel_to_dm.py`读取 Excel 文件中的各个工作表 2. **数据转换**:针对特定工作表进行数据转换(如中文转数字编码) 3. **数据验证**:调用`validator.py`根据`VALIDATION_RULES.py`中定义的规则验证数据 4. **字段映射**:根据`MAP_INFO.py`中定义的映射关系,将 Excel 列名映射到数据库字段名 5. **数据上传**:调用`upload_to_sql.py`将数据上传到达梦数据库,根据`UPLOAD_RULES.py`决定是追加还是替换数据 6. **状态记录**:将验证和上传的状态信息记录到数据库的状态表中 ## 核心功能模块 ### 1. 数据验证模块 验证模块(`validator.py`)根据`VALIDATION_RULES.py`中定义的规则,对 Excel 中的数据进行验证,包括: - 必填列检查 - 数据格式验证(如日期格式) - 唯一性检查(如企业编码、设备编号、人员卡号) - 编码长度检查 验证结果会记录到数据库的`status_information`表中。 ### 2. 字段映射功能 `MAP_INFO.py`定义了 Excel 工作表列名到数据库表字段的映射关系,支持将中文列名映射为英文数据库字段名。系统会根据这些映射关系,自动过滤和重命名列,确保数据格式符合数据库要求。 ### 3. 数据上传策略 系统支持两种数据上传策略: - **追加模式(APPEND)**:将新数据添加到现有表中,适用于日志类数据(如设备事故记录、设备标校记录等) - **替换模式(REPLACE)**:清空现有表数据,然后插入新数据,适用于主数据表(如企业基本信息、重大设备等) 这些策略在`UPLOAD_RULES.py`中定义。 ### 4. 数据类型转换 系统在处理特定工作表时,会自动将中文文本转换为对应的数字编码,例如: - 企业类型(煤矿->1,油田->2 等) - 设备状态(使用中->1,报废->2 等) - 风险等级(低风险->0,一般风险->1 等) ## 支持的数据表 系统支持以下主要数据表及相关子表: 1. **企业基本信息** 2. **重大设备** 3. **人员安全档案** 4. **重大设备相关子表**(事故登记、标校记录、安装验收等) 5. **安全管理相关表**(风险登记、隐患登记、危险源登记等) 6. **应急管理相关表**(应急预案、应急物资、救援队伍等) ## 技术栈 - **编程语言**:Python - **数据处理**:pandas - **数据库连接**:dmPython(达梦数据库驱动) - **数据库**:达梦数据库(DM) ## 环境配置 1. **Python 环境**:建议使用 Python 3.7 或更高版本 2. **依赖安装**: ```bash pip install pandas openpyxl dmPython ``` 3. **数据库配置**: 数据库连接信息在`dm_connection.py`中配置,包括: - 用户名 - 密码 - 服务器地址 - 端口号 ## 使用方法 1. **准备 Excel 数据**:确保 Excel 文件格式符合系统要求,包含必要的工作表和列 2. **运行程序**: ```bash python excel_to_dm.py <前端UUID> ``` 例如: ```bash python excel_to_dm.py "榆林最新测试数据.xlsx" "abcd1234" ``` 3. **查看结果**:程序会输出处理过程的日志信息,包括: - 工作表列表 - 每个工作表的处理状态 - 验证结果 - 数据上传状态 ## 验证规则说明 主要验证规则包括: | 规则名称 | 验证内容 | 适用字段 | | ---------------------- | --------------------- | -------- | | datetime | 日期格式有效性检查 | 数据日期 | | unique_enterprise_code | 企业编码唯一性检查 | 企业编码 | | length_check | 编码长度检查(12 位) | 企业编码 | | unique_device_code | 设备编号唯一性检查 | 设备编号 | | unique_person_card | 人员卡号唯一性检查 | 员工卡号 | ## 注意事项 1. Excel 文件中,数据从第 4 行开始读取(第 1 行是标题,第 2-3 行是说明) 2. 所有工作表必须包含"数据日期"列 3. 对于特定工作表,需要按照预定义的格式填写数据 4. 程序运行前请确保达梦数据库连接配置正确 ## 故障排除 常见问题及解决方案: 1. **Excel 文件不存在**:检查文件路径是否正确 2. **数据库连接失败**:检查`dm_connection.py`中的连接配置 3. **数据验证失败**:根据程序输出的错误信息,检查 Excel 中对应行列的数据 4. **字段映射失败**:检查 Excel 列名是否与`MAP_INFO.py`中的配置一致 ## 维护与扩展 如需添加新的工作表支持,需要: 1. 在`MAP_INFO.py`中添加新工作表的表名和字段映射 2. 在`UPLOAD_RULES.py`中指定上传策略(追加或替换) 3. 如需特殊验证规则,在`VALIDATION_RULES.py`中添加新规则 4. 如需数据转换,在`excel_to_dm.py`中添加相应的转换逻辑