wizaplace/php-etl

使用此用PHP编写的迁移库提取、转换和加载数据。

2.3.0 2023-05-14 14:59 UTC

This package is auto-updated.

Last update: 2024-09-14 18:04:25 UTC


README

License CircleCI Version Maintenance Ask Me Anything ! PHP Version

使用PHP提取、转换和加载数据。此库提供类和工作流程,允许您从各种源(CSV、数据库等)提取数据,然后转换它们,最后以另一种格式保存。

您还可以轻松添加自定义类(提取器、转换器和加载器)。

ETL

版本和兼容性

  • 要利用最新功能并且使用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改进的分支。