Spaces:
Runtime error
Runtime error
| # CSV批量导入功能 | |
| ## 📋 功能说明 | |
| 添加了CSV批量导入功能,可以将类似Wiki网站的数据直接从CSV文件批量导入到数据库中,避免重复爬取,极大提高数据导入效率。 | |
| ## ✅ 已实现的功能 | |
| ### 1. CSV解析和导入 | |
| - ✅ 支持多种CSV格式(UTF-8、Latin-1编码) | |
| - ✅ 自动识别CSV列(title, content, url, category等) | |
| - ✅ 智能字段匹配(不区分大小写) | |
| - ✅ 自动生成URL(如果CSV中没有URL列) | |
| ### 2. 批量处理 | |
| - ✅ 批量向量化和存储(默认每批50条) | |
| - ✅ 自动独特性检测和晋升到Space R | |
| - ✅ 进度反馈(实时显示导入进度) | |
| ### 3. 前端界面 | |
| - ✅ CSV文件选择器 | |
| - ✅ 密码验证(与URL爬取共用密码) | |
| - ✅ URL前缀配置(可选) | |
| - ✅ 上传状态反馈 | |
| ### 4. 后端处理 | |
| - ✅ 异步后台处理(不阻塞请求) | |
| - ✅ WebSocket实时进度推送 | |
| - ✅ 错误处理和日志记录 | |
| - ✅ 自动清理临时文件 | |
| ## 🎯 使用方法 | |
| ### 步骤 1: 准备CSV文件 | |
| CSV文件应包含以下列(列名不区分大小写): | |
| **必需列:** | |
| - `content` / `text` / `body` - 内容文本 | |
| **可选列:** | |
| - `title` / `name` / `page` - 标题 | |
| - `url` / `link` - URL链接 | |
| - `category` / `type` - 分类 | |
| **CSV示例:** | |
| ```csv | |
| title,content,url,category | |
| "Machine Learning","Machine learning is a subset of artificial intelligence...","https://wiki.example.com/ml","Technology" | |
| "Deep Learning","Deep learning uses neural networks...","https://wiki.example.com/deep-learning","Technology" | |
| "Python Programming","Python is a high-level programming language...","https://wiki.example.com/python","Programming" | |
| ``` | |
| 或者更简单的格式: | |
| ```csv | |
| title,content | |
| "Article 1","This is the content of article 1..." | |
| "Article 2","This is the content of article 2..." | |
| ``` | |
| 如果没有URL列,系统会自动生成URL(基于URL前缀和标题)。 | |
| ### 步骤 2: 上传CSV文件 | |
| 1. 在前端页面找到"Batch Import (Wiki Style)"区域 | |
| 2. 点击"选择文件"按钮,选择CSV文件 | |
| 3. 可选:输入URL前缀(例如:`https://wiki.example.com/page`) | |
| 4. 输入密码(与URL爬取相同的密码) | |
| 5. 点击"批量导入"按钮 | |
| ### 步骤 3: 查看导入进度 | |
| 导入过程中,您会看到: | |
| - 实时进度提示(通过WebSocket推送) | |
| - 成功/失败统计 | |
| - 自动晋升到Space R的内容数量 | |
| ## 📊 CSV格式说明 | |
| ### 支持的列名(不区分大小写) | |
| **内容列**(优先级从高到低): | |
| - `content` | |
| - `text` | |
| - `body` | |
| - `description` | |
| - `abstract` | |
| 如果以上列都不存在,系统会尝试组合所有非URL/标题列作为内容。 | |
| **标题列**(优先级从高到低): | |
| - `title` | |
| - `name` | |
| - `page` | |
| **URL列**(优先级从高到低): | |
| - `url` | |
| - `link` | |
| - `href` | |
| 如果CSV中没有URL列,系统会根据以下规则生成: | |
| - 如果提供了URL前缀:`{url_prefix}/{title_with_underscores}` | |
| - 如果没有URL前缀:`csv_import/{title_with_underscores}` 或 `csv_import/{random_id}` | |
| **分类列**: | |
| - `category` | |
| - `type` | |
| ### 数据要求 | |
| - 内容文本长度至少10个字符(太短的会被跳过) | |
| - 支持多行文本(CSV格式中的换行符会被保留) | |
| - 自动清理空值和多余空格 | |
| ## 🔧 配置说明 | |
| ### 环境变量 | |
| CSV导入功能使用与URL爬取相同的密码验证: | |
| - `CRAWL_PASSWORD` - 在 `.env` 文件中设置 | |
| ### 导入参数 | |
| - **批量大小**:默认50条/批(可在代码中调整) | |
| - **独特性检测**:默认开启,独特内容会自动晋升到Space R | |
| - **URL前缀**:可选,用于生成缺失的URL | |
| ## 📝 导入统计 | |
| 导入完成后,系统会返回统计信息: | |
| ```json | |
| { | |
| "total": 100, // 总行数 | |
| "processed": 100, // 已处理行数 | |
| "success": 95, // 成功导入数 | |
| "failed": 5, // 失败数 | |
| "promoted": 10 // 晋升到Space R的数量 | |
| } | |
| ``` | |
| ## 🔍 错误处理 | |
| ### 常见错误 | |
| 1. **密码错误** | |
| - 错误信息:`密码错误,CSV导入被拒绝` | |
| - 解决:检查密码是否正确 | |
| 2. **文件格式错误** | |
| - 错误信息:`只支持CSV文件格式` | |
| - 解决:确保文件扩展名为`.csv` | |
| 3. **编码问题** | |
| - 系统会自动尝试多种编码(UTF-8、Latin-1) | |
| - 如果仍有问题,请将CSV文件转换为UTF-8编码 | |
| 4. **内容太短** | |
| - 内容少于10个字符的行会被跳过 | |
| - 确保每行都有足够的内容 | |
| ## 💡 使用建议 | |
| ### 性能优化 | |
| 1. **批量大小** | |
| - 默认50条/批,适合大多数情况 | |
| - 对于大型CSV(>1000行),可以增加到100 | |
| 2. **URL前缀** | |
| - 建议为不同来源的Wiki设置不同的URL前缀 | |
| - 例如:`https://wiki.example.com/page`、`https://docs.example.com/article` | |
| 3. **分类标签** | |
| - 使用`category`列可以帮助后续搜索和过滤 | |
| - 统一的分类命名有助于数据管理 | |
| ### 数据质量 | |
| 1. **内容清理** | |
| - 导入前建议清理HTML标签(如果CSV中包含) | |
| - 确保内容是可读的纯文本 | |
| 2. **标题质量** | |
| - 良好的标题有助于生成有意义的URL | |
| - 标题应该是简洁、描述性的 | |
| 3. **URL唯一性** | |
| - 如果CSV中有URL列,确保URL是唯一的 | |
| - 重复的URL可能导致数据覆盖 | |
| ## 🔒 安全说明 | |
| - CSV导入需要密码验证(与URL爬取共用) | |
| - 文件上传后存储在临时目录,处理完成后自动删除 | |
| - 建议在生产环境中使用HTTPS | |
| ## 📚 相关文件 | |
| - `csv_importer.py` - CSV导入核心模块 | |
| - `web_server.py` - API端点和后台任务 | |
| - `static/index.html` - 前端上传界面 | |
| - `system_manager.py` - 数据库存储逻辑 | |
| ## 🔄 更新日志 | |
| ### v1.0 (当前版本) | |
| - ✅ 支持多种CSV格式和列名 | |
| - ✅ 批量导入和进度反馈 | |
| - ✅ 自动独特性检测和晋升 | |
| - ✅ 密码验证和安全控制 | |
| - ✅ 前端上传界面 | |
| ## 🚀 后续改进 | |
| 可能的改进方向: | |
| - [ ] 支持Excel文件导入(.xlsx) | |
| - [ ] 支持JSON格式导入 | |
| - [ ] 导入预览功能(上传前预览前几行) | |
| - [ ] 导入历史记录 | |
| - [ ] 重复数据检测和去重 | |
| - [ ] 自定义字段映射配置 | |