Hyperf 成熟方案的PHP数据清洗、ETL工具链最好的库
Hyperf 本身没有专门的"开箱即用 ETL"官方组件,但有几个成熟方案可以组合使用: rt
— rt
最佳选择
- https://github.com/flow-php/etl — 首选 esc to interrupt
PHP 生态里最完整的 ETL 框架,强类型、基于 Generator 低内存占用,天然适合 Hyperf 的协程环境。
composer require flow-php/etl
核心特性:
- Extract / Transform / Load 管道式 API
- 内置 CSV、JSON、Parquet、XML、数据库等 Extractor/Loader
- 支持批量处理、数据去重、类型转换、过滤
- Generator 架构,处理百万行数据内存稳定
在 Hyperf 里用法:
use Flow\ETL\Flow;
use Flow\ETL\Adapter\CSV\CSVExtractor;
// 在 Hyperf Command 或 Job 里
Flow::setUp()
->read(CSVExtractor::from(‘/data/input.csv’))
->rows(fn($rows) => $rows->filter(…)->map(…))
->write(/* loader */)
->run();
- https://github.com/friendsofhyperf/components — Hyperf 生态补充
包含 purifier(HTML 数据清洗)、validated-dto(输入验证+转换)等组件,适合 API 层的数据清洗场景。
composer require friendsofhyperf/validated-dto
- Hyperf 原生能力组合
对于中等复杂度的 ETL,Hyperf 自带的组件已经够用:
┌────────────────┬──────────────────────────┐
│ 场景 │ 组件 │
├────────────────┼──────────────────────────┤
│ 批量数据库读写 │ hyperf/database + chunk │
├────────────────┼──────────────────────────┤
│ 异步并行处理 │ hyperf/async-queue │
├────────────────┼──────────────────────────┤
│ 定时触发 │ hyperf/crontab │
├────────────────┼──────────────────────────┤
│ 大文件导入导出 │ phpoffice/phpspreadsheet │
└────────────────┴──────────────────────────┘
推荐组合
flow-php/etl ← ETL 核心管道
hyperf/async-queue ← 异步分发任务
hyperf/crontab ← 定时触发
hyperf/database ← 数据源/目标
结论:flow-php/etl 是 PHP 生态里最接近"开箱即用"的 ETL 工具链,与 Hyperf 协程兼容良好(纯 PHP,无阻塞 IO)。如果只是
API 输入清洗,friendsofhyperf/validated-dto 更轻量。
