$npx -y skills add lightpointventures/claude-code-starter --skill migrate当用户想转换数据格式、CSV 转 JSON、迁移数据库、导入导出数据时使用 -- 在不同格式和系统之间迁移数据
| 1 | # 数据迁移 |
| 2 | |
| 3 | 帮用户在不同数据格式之间转换,或从一个系统迁移数据到另一个系统。 |
| 4 | |
| 5 | ## 步骤 |
| 6 | |
| 7 | ### 0. 备份(强制) |
| 8 | |
| 9 | 在做任何迁移操作之前,必须先备份源数据: |
| 10 | |
| 11 | - 文件:`cp source.csv source.csv.bak` |
| 12 | - 数据库:`pg_dump` / `mysqldump` / `sqlite3 db.sqlite .dump > backup.sql` |
| 13 | - 告知用户备份位置,确认后再继续 |
| 14 | |
| 15 | ### 1. 确定迁移类型 |
| 16 | |
| 17 | 根据用户需求,走对应的子路径: |
| 18 | |
| 19 | **(a) 文件格式转换**(CSV/JSON/Excel/Parquet 互转) |
| 20 | - 推荐工具:pandas(Python 通用)、jq(JSON 处理)、csvkit(CSV 命令行工具) |
| 21 | - 关键:先用 `file` 或 `chardetect` 确认源文件编码 |
| 22 | |
| 23 | **(b) 数据库迁移**(MySQL -> PostgreSQL、SQLite -> PostgreSQL 等) |
| 24 | - 推荐工具:pgloader(MySQL/SQLite 到 PostgreSQL)、mysqldump + psql(手动)、Django/Alembic migrations(ORM 项目) |
| 25 | - 关键:先对比源和目标的 schema 差异(字段类型、索引、约束) |
| 26 | |
| 27 | **(c) API 数据导入**(从外部 API 拉数据存到本地) |
| 28 | - 推荐:写 Python 脚本,包含分页处理 + rate limiting + 断点续传 |
| 29 | - 关键:先调一页确认数据结构,再跑全量 |
| 30 | |
| 31 | ### 2. 分析源数据 |
| 32 | |
| 33 | - 读取源数据,检查格式和结构 |
| 34 | - 统计数据量(行数、字段数、文件大小) |
| 35 | - 发现潜在问题(编码、缺失值、格式不一致、重复数据) |
| 36 | |
| 37 | ### 3. Dry Run(试运行) |
| 38 | |
| 39 | 在正式迁移前,先用小样本测试: |
| 40 | |
| 41 | > 试运行结果:从前 100 条数据中,成功转换 98 条,2 条有问题(原因:xxx)。 |
| 42 | > 预计全量迁移 N 条记录,耗时约 X 分钟。 |
| 43 | > 确认继续吗? |
| 44 | |
| 45 | 用户确认后再执行全量迁移。 |
| 46 | |
| 47 | ### 4. 执行迁移 + 完整性校验 |
| 48 | |
| 49 | 执行全量迁移,完成后做数据完整性检查: |
| 50 | |
| 51 | - 行数对比:源 vs 目标 |
| 52 | - 关键字段抽样对比(首行、末行、随机几行) |
| 53 | - 数值型字段的 sum/count 对比 |
| 54 | |
| 55 | > 迁移完成。源数据 N 条,目标 N 条,校验通过。 |
| 56 | > 备份文件在:xxx,确认无误后可删除。 |
| 57 | |
| 58 | ## 遇到问题 |
| 59 | |
| 60 | - **编码错误(UnicodeDecodeError / 乱码)?** 用 `chardetect file.csv` 检测实际编码,常见的是 GBK/GB2312 被当成 UTF-8 读取。pandas 用 `encoding='gbk'` 参数。 |
| 61 | - **迁移中途失败了?** 检查错误日志,找到失败的行号。修复问题后从断点继续,不要从头重跑。API 导入建议记录已处理的 offset/page。 |
| 62 | - **迁移后数据数量对不上?** 检查:(1) 是否有重复数据被去重,(2) 是否有空行/非法行被跳过,(3) 数据库是否有 unique 约束拒绝了重复记录。 |
| 63 | - **数据库迁移后查询变慢?** 检查索引是否迁移过来了,大部分工具不会自动迁移索引,需要手动创建。 |