151 lines
4.4 KiB
Markdown
151 lines
4.4 KiB
Markdown
# 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` 级别:错误信息
|
||
|
||
## 许可证
|
||
|
||
本项目仅供内部使用。
|