PHPackages                             umpirsky/extraload - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. umpirsky/extraload

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

umpirsky/extraload
==================

Powerful ETL library.

0.1.0(10y ago)354194[5 issues](https://github.com/umpirsky/Extraload/issues)[1 PRs](https://github.com/umpirsky/Extraload/pulls)MITPHPPHP &gt;=5.6

Since Jan 23Pushed 7y ago7 watchersCompare

[ Source](https://github.com/umpirsky/Extraload)[ Packagist](https://packagist.org/packages/umpirsky/extraload)[ Docs](http://umpirsky.com)[ RSS](/packages/umpirsky-extraload/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (8)Versions (9)Used By (0)

###  [ ![](https://camo.githubusercontent.com/4acdbd12ae1b9a9539be7b30f8cef6cd9678ccb45500067152e333743632afd8/68747470733a2f2f6661726d322e737461746963666c69636b722e636f6d2f313730392f32353039383532363838345f616534643530343635665f6f5f642e706e67) ](https://github.com/umpirsky)

[](#----------------)

 [symfony upgrade fixer](https://github.com/umpirsky/Symfony-Upgrade-Fixer) • [twig gettext extractor](https://github.com/umpirsky/Twig-Gettext-Extractor) • [wisdom](https://github.com/umpirsky/wisdom) • [centipede](https://github.com/umpirsky/centipede) • [permissions handler](https://github.com/umpirsky/PermissionsHandler) • **extraload** • [gravatar](https://github.com/umpirsky/Gravatar) • [locurro](https://github.com/umpirsky/locurro) • [country list](https://github.com/umpirsky/country-list) • [transliterator](https://github.com/umpirsky/Transliterator)

Extraload [![Build Status](https://camo.githubusercontent.com/beb833cdbc2fac6c6516fe8998b82e70d9c0cc03693c6f59b3c7e75e0cb52195/68747470733a2f2f7472617669732d63692e6f72672f756d706972736b792f45787472616c6f61642e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/umpirsky/Extraload) [![Scrutinizer Code Quality](https://camo.githubusercontent.com/36e28f6d849da987c3aee30a224c76baa12908fd3972858d0a3637c02ab4d77f/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f756d706972736b792f45787472616c6f61642f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/umpirsky/Extraload/?branch=master)
=====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

[](#extraload--)

Powerful ETL library.

Examples
--------

[](#examples)

### Dumping CSV data into the console

[](#dumping-csv-data-into-the-console)

Input data is given in csv format:

```
"99921-58-10-7", "Divine Comedy", "Dante Alighieri"
"9971-5-0210-0", "A Tale of Two Cities", "Charles Dickens"
"960-425-059-0", "The Lord of the Rings", "J. R. R. Tolkien"
"80-902734-1-6", "And Then There Were None", "Agatha Christie"
```

With:

```
(new DefaultPipeline(
    new CsvExtractor(
        new \SplFileObject('books.csv')
    ),
    new NoopTransformer(),
    new ConsoleLoader(
        new Table(new ConsoleOutput())
    )
))->process();
```

It can be dumped as table to console:

```
+---------------+--------------------------+------------------+
| 99921-58-10-7 | Divine Comedy            | Dante Alighieri  |
| 9971-5-0210-0 | A Tale of Two Cities     | Charles Dickens  |
| 960-425-059-0 | The Lord of the Rings    | J. R. R. Tolkien |
| 80-902734-1-6 | And Then There Were None | Agatha Christie  |
+---------------+--------------------------+------------------+

```

In this example `NoopTransformer` is used, but various transformations can be applied. Transformers can also be chained using `TransformerChain`.

### Dumping a Doctrine query into the console

[](#dumping-a-doctrine-query-into-the-console)

First of all make sure to load the fixtures into a database -- this example works with MySQL:

```
mysql> source /home/standard/projects/Extraload/fixtures/mysql/books.sql

```

So the following code:

```
(new DefaultPipeline(
    new QueryExtractor($conn, 'SELECT * FROM books'),
    new NoopTransformer(),
    new ConsoleLoader(
        new Table($output = new ConsoleOutput())
    )
))->process();
```

Will dump these results to the console:

```
+---------------+--------------------------+------------------+
| 99921-58-10-7 | Divine Comedy            | Dante Alighieri  |
| 9781847493583 | La Vita Nuova            | Dante Alighieri  |
| 9971-5-0210-0 | A Tale of Two Cities     | Charles Dickens  |
| 960-425-059-0 | The Lord of the Rings    | J. R. R. Tolkien |
| 80-902734-1-6 | And Then There Were None | Agatha Christie  |
+---------------+--------------------------+------------------+

```

### Dumping a Doctrine prepared query into the console

[](#dumping-a-doctrine-prepared-query-into-the-console)

The following code:

```
// ...

$sql = "SELECT * FROM books WHERE author = :author";
$values = [
    [
        'parameter' => ':author',
        'value' => 'Dante Alighieri',
        'data_type' => PDO::PARAM_STR // optional
    ]
];

(new DefaultPipeline(
    new QueryExtractor($conn, $sql, $values),
    new NoopTransformer(),
    new ConsoleLoader(
        new Table($output = new ConsoleOutput())
    )
))->process();
```

Will dump these results to the console:

```
+---------------+---------------+-----------------+
| 99921-58-10-7 | Divine Comedy | Dante Alighieri |
| 9781847493583 | La Vita Nuova | Dante Alighieri |
+---------------+---------------+-----------------+

```

### Dumping a Doctrine query into a table

[](#dumping-a-doctrine-query-into-a-table)

The following code:

```
// ...

(new DefaultPipeline(
    new QueryExtractor($conn, 'SELECT * FROM books'),
    new NoopTransformer(),
    new DbalLoader($conn, 'my_books')
))->process();
```

Will dump the results into the `my_books` table:

```
mysql> select * from my_books;
+----------------+--------------------------+----------------------------+
| isbn           | title                    | author                     |
+----------------+--------------------------+----------------------------+
| 9781503262140  | Faust                    | Johann Wolfgang von Goethe |
| 978-0156949606 | The Waves                | Virgina Woolf              |
| 99921-58-10-7  | Divine Comedy            | Dante Alighieri            |
| 9781847493583  | La Vita Nuova            | Dante Alighieri            |
| 9971-5-0210-0  | A Tale of Two Cities     | Charles Dickens            |
| 960-425-059-0  | The Lord of the Rings    | J. R. R. Tolkien           |
| 80-902734-1-6  | And Then There Were None | Agatha Christie            |
+----------------+--------------------------+----------------------------+
7 rows in set (0.00 sec)

```

See more [examples](https://github.com/umpirsky/Extraload/tree/master/examples).

2. Inspiration
--------------

[](#2-inspiration)

Inspired by [php-etl](https://github.com/docteurklein/php-etl) and [petl](https://github.com/alimanfoo/petl).

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance17

Infrequent updates — may be unmaintained

Popularity24

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 98.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3710d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/379f6555cc98722ab303535ce5811af267fd006fc3e141bd0cea546430160c74?d=identicon)[umpirsky](/maintainers/umpirsky)

---

Top Contributors

[![umpirsky](https://avatars.githubusercontent.com/u/208957?v=4)](https://github.com/umpirsky "umpirsky (55 commits)")[![joshhornby](https://avatars.githubusercontent.com/u/5455767?v=4)](https://github.com/joshhornby "joshhornby (1 commits)")

---

Tags

convertexportimportextracttransformetlload

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/umpirsky-extraload/health.svg)

```
[![Health](https://phpackages.com/badges/umpirsky-extraload/health.svg)](https://phpackages.com/packages/umpirsky-extraload)
```

###  Alternatives

[league/csv

CSV data manipulation made easy in PHP

3.5k166.1M641](/packages/league-csv)[flow-php/etl

PHP ETL - Extract Transform Load - Abstraction

374468.4k51](/packages/flow-php-etl)[marquine/php-etl

Extract, Transform and Load data using PHP.

182137.5k](/packages/marquine-php-etl)[flow-php/flow

PHP ETL - Extract Transform Load - Data processing framework

81733.7k](/packages/flow-php-flow)[flow-php/array-dot

PHP ETL - Array Dot functions

14374.1k3](/packages/flow-php-array-dot)[fab2s/yaetl

Widely Extended Nodal Extract-Transform-Load ETL Workflow AKA NEJQTL or Nodal-Extract-Join-Qualify-Tranform-Load

64181.0k](/packages/fab2s-yaetl)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
