3.6 KiB
3.6 KiB
Lazer API 数据同步指南
本指南将帮助您将现有的 bancho.py 数据库数据同步到新的 Lazer API 专用表中。
文件说明
migrations/add_missing_fields.sql- 创建 Lazer API 专用表结构migrations/sync_legacy_data.sql- 数据同步脚本sync_data.py- 交互式数据同步工具quick_sync.py- 快速同步脚本(使用项目配置)
使用方法
方法一:快速同步(推荐)
如果您已经配置好了项目的数据库连接,可以直接使用快速同步脚本:
python quick_sync.py
此脚本会:
- 自动读取项目配置中的数据库连接信息
- 创建 Lazer API 专用表结构
- 同步现有数据到新表
方法二:交互式同步
如果需要使用不同的数据库连接配置:
python sync_data.py
此脚本会:
- 交互式地询问数据库连接信息
- 检查必要表是否存在
- 显示详细的同步过程和结果
方法三:手动执行 SQL
如果您熟悉 SQL 操作,可以手动执行:
# 1. 创建表结构
mysql -u username -p database_name < migrations/add_missing_fields.sql
# 2. 同步数据
mysql -u username -p database_name < migrations/sync_legacy_data.sql
同步内容
创建的新表
lazer_user_profiles- 用户扩展资料lazer_user_countries- 用户国家信息lazer_user_kudosu- 用户 Kudosu 统计lazer_user_counts- 用户各项计数统计lazer_user_statistics- 用户游戏统计(按模式)lazer_user_achievements- 用户成就lazer_oauth_tokens- OAuth 访问令牌- 其他相关表...
同步的数据
-
用户基本信息
- 从
users表同步基本资料 - 自动转换时间戳格式
- 设置合理的默认值
- 从
-
游戏统计
- 从
stats表同步各模式的游戏数据 - 计算命中精度和其他衍生统计
- 从
-
用户成就
- 从
user_achievements表同步成就数据(如果存在)
- 从
注意事项
-
安全性
- 脚本只会创建新表和插入数据
- 不会修改或删除现有的原始表数据
- 使用
ON DUPLICATE KEY UPDATE避免重复插入
-
兼容性
- 兼容现有的 bancho.py 数据库结构
- 支持标准的 osu! 数据格式
-
性能
- 大量数据可能需要较长时间
- 建议在维护窗口期间执行
故障排除
常见错误
-
"Unknown column" 错误
ERROR 1054: Unknown column 'users.is_active' in 'field list'解决方案: 确保先执行了
add_missing_fields.sql创建表结构 -
"Table doesn't exist" 错误
ERROR 1146: Table 'database.users' doesn't exist解决方案: 确认数据库中存在 bancho.py 的原始表
-
连接错误
ERROR 2003: Can't connect to MySQL server解决方案: 检查数据库连接配置和权限
验证同步结果
同步完成后,可以执行以下查询验证结果:
-- 检查同步的用户数量
SELECT COUNT(*) FROM lazer_user_profiles;
-- 查看样本数据
SELECT
u.id, u.name,
lup.playmode, lup.is_supporter,
lus.pp, lus.play_count
FROM users u
LEFT JOIN lazer_user_profiles lup ON u.id = lup.user_id
LEFT JOIN lazer_user_statistics lus ON u.id = lus.user_id AND lus.mode = 'osu'
LIMIT 5;
支持
如果遇到问题,请:
- 检查日志文件
data_sync.log - 确认数据库权限
- 验证原始表数据完整性