# AI 关键词导入工具 ## 项目简介 本项目是一个从 Excel 文件批量导入关键词到 MySQL 数据库的工具,支持自动关联科室信息和作者信息。 ## 功能特性 - 从 Excel 文件读取关键词和科室信息 - 自动去重,避免重复导入 - 支持批量导入或测试模式(导入指定条数) - 自动查询科室 ID 和对应的作者信息 - 导入完成后自动清理已处理的 Excel 文件 - 详细的日志输出,便于追踪导入过程 ## 环境要求 - Python 3.7+ - MySQL 数据库 ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 使用方法 ### 1. 准备 Excel 文件 在项目根目录下创建 `query_upload` 文件夹,并将 Excel 文件放入该文件夹中。 Excel 文件需要包含以下列: - `query` 列:关键词列(必需) - `科室` 列:科室信息列(可选,如不存在则不关联科室) ### 2. 配置数据库 编辑 `database_config.py` 文件,修改数据库连接配置: ```python DB_CONFIG = { 'host': 'your_host', 'user': 'your_user', 'password': 'your_password', 'database': 'your_database', 'charset': 'utf8mb4' } ``` ### 3. 运行导入工具 ```bash python import_keywords.py ``` ### 4. 命令行参数(可选) ```bash python import_keywords.py --host 127.0.0.1 --port 3306 --user root --password your_password --database ai_article ``` 可用参数: - `--host`: 数据库主机(默认使用配置文件中的值) - `--port`: 数据库端口(默认 3306) - `--user`: 数据库用户名(默认使用配置文件中的值) - `--password`: 数据库密码(默认使用配置文件中的值) - `--database`: 数据库名(默认使用配置文件中的值) - `--batch-size`: 日志批次大小(默认 1) - `--sleep`: 每条记录间隔时间秒数(默认 0.1) - `--query-column`: Excel 中的关键词列名(默认 'query') - `--dept-column`: Excel 中的科室列名(默认 '科室') - `--seed-id`: 种子 ID(默认 9999) - `--seed-name`: 种子名称(默认 '手动提交') ## 数据库表结构 ### baidu_keyword 表(目标表) 导入的数据会插入到 `baidu_keyword` 表,字段包括: - `keyword`: 关键词 - `seed_id`: 种子 ID - `seed_name`: 种子名称 - `crawled`: 是否已爬取 - `department`: 科室名称 - `department_id`: 科室 ID - `query_status`: 查询状态(固定为 'manual_review') - `author_id`: 作者 ID - `author_name`: 作者名称 ### ai_departments 表(科室表) 需要预先存在,用于查询科室 ID: - `id`: 科室 ID - `department_name`: 科室名称 ### ai_authors 表(作者表) 需要预先存在,用于查询作者信息: - `id`: 作者 ID - `author_name`: 作者名称 - `department_id`: 所属科室 ID - `status`: 状态(需为 'active') - `daily_post_max`: 每日最大发布数(需大于 0) ## 工作流程 1. 检测 `query_upload` 文件夹中的 Excel 文件 2. 如果有多个文件,提示用户选择 3. 读取 Excel 文件中的关键词和科室信息 4. 提示用户选择全部导入或测试模式 5. 显示前 10 条数据预览 6. 确认后开始导入: - 查询关键词是否已存在 - 如果存在则跳过 - 如果不存在,根据科室名称查询科室 ID - 根据科室 ID 查询符合条件的作者信息 - 插入数据到 `baidu_keyword` 表 7. 导入成功后自动清理 `query_upload` 文件夹中的 Excel 文件 ## 注意事项 1. 确保 `ai_departments` 表中已存在 Excel 中提到的所有科室 2. 确保每个科室在 `ai_authors` 表中至少有一个状态为 'active' 且 `daily_post_max > 0` 的作者 3. 如果科室不存在,导入过程会中断并报错 4. 导入成功后,原始 Excel 文件会被自动删除 5. 如果导入失败,Excel 文件会保留以便排查问题 ## 项目结构 ``` ai_import_quary/ ├── database_config.py # 数据库配置和管理模块 ├── import_keywords.py # 关键词导入主程序 ├── requirements.txt # Python 依赖包 ├── README.md # 项目说明文档 └── query_upload/ # Excel 文件存放目录(需手动创建) ``` ## 日志说明 程序运行过程中会输出详细的日志信息: - `INFO` 级别:一般信息和进度提示 - `DEBUG` 级别:详细的调试信息 - `WARNING` 级别:警告信息 - `ERROR` 级别:错误信息 ## 许可证 本项目仅供内部使用。