wizaplace / php-etl
使用此用PHP编写的迁移库提取、转换和加载数据。
2.3.0
2023-05-14 14:59 UTC
Requires
- php: ~8.1
- softcreatr/jsonpath: ^0.7.2
Requires (Dev)
- ext-json: *
- ext-pdo: *
- ext-pdo_sqlite: *
- ext-xmlreader: *
- friendsofphp/php-cs-fixer: ^3.4
- infection/infection: >=0.15
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^0.12.100
- phpstan/phpstan-deprecation-rules: ^0.12.6
- phpstan/phpstan-strict-rules: ^0.12.11
- phpunit/phpunit: >=8
- squizlabs/php_codesniffer: ^3.5
Suggests
- ext-PDO: Required for various extractors and loaders. Most users will want this.
- ext-json: Required for JSON extractor and JSON Encode/Decode transformers.
- ext-pdo_mysql: Required to work with MySQL databases.
- ext-pdo_pgsql: Required to work with PostgreSQL databases.
- ext-pdo_sqlite: Required to work with SQLite databases.
- ext-pdo_sqlsrv: Required to work with MS SQL Server databases.
- ext-xmlreader: Required for XML extractor.
This package is auto-updated.
Last update: 2024-09-14 18:04:25 UTC
README
使用PHP提取、转换和加载数据。此库提供类和工作流程,允许您从各种源(CSV、数据库等)提取数据,然后转换它们,最后以另一种格式保存。
您还可以轻松添加自定义类(提取器、转换器和加载器)。
版本和兼容性
- 要利用最新功能并且使用PHP 8.1及以上版本:请使用库的2.3版本(及以上)。
- 如果您使用较旧的PHP版本:7.4或8.0,请使用库的2.2版本。
- 如果您使用较旧的PHP版本:7.2 <= PHP <= 7.4,请使用遗留的1.3.x版本。
变更日志
在此处查看变更日志这里
安装
在您的应用程序文件夹中,运行
composer require wizaplace/php-etl
示例 🚈
在下面的示例中,我们将从CSV文件中提取数据,从名称和电子邮件列中删除空白,然后将值插入到users表中
use Wizaplace\Etl\Etl; use Wizaplace\Etl\Extractors\Csv; use Wizaplace\Etl\Transformers\Trim; use Wizaplace\Etl\Loaders\Insert; use Wizaplace\Etl\Database\Manager; use Wizaplace\Etl\Database\ConnectionFactory; // Get your database settings : $config = [ 'driver' => 'mysql', 'host' => 'localhost', 'port' => '3306', 'database' => 'myDatabase', 'username' => 'foo', 'password' => 'bar', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', ]; // Instanciate all the components (manually or automatically with DI) $manager = new Manager(new ConnectionFactory()); $manager->addConnection($config); $etl = new Etl(); $extractor = new Csv(); $transformer = new Trim(); $loader = new Insert($manager); $etl->extract($extractor, '/path/to/users.csv') ->transform( $transformer, [Step::COLUMNS => ['name', 'email']] ) ->load($loader, 'users') ->run();
此库完全兼容任何PHP项目。例如,在Symfony中,您可以充分利用自动装配。在以下示例中,您在主ETL对象上启用它,通过将shared参数设置为false,以便有机会获取不同的ETL实例(可选)。
services.yaml
Wizaplace\Etl\Etl: shared: false
文档 📓
文档位于仓库的子文件夹中,此处。
许可
WP-ETL采用MIT许可。
项目的起源
此项目是基于marquine/php-etl项目并由Leonardo Marquine改进的分支。