symfony upgrade fixer • twig gettext extractor • wisdom • centipede • permissions handler • extraload • gravatar • locurro • country list • transliterator
Powerful ETL library.
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:
(newDefaultPipeline(
newCsvExtractor(
new \SplFileObject('books.csv')
),
newNoopTransformer(),
newConsoleLoader(
newTable(newConsoleOutput())
)
))->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.
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:
(newDefaultPipeline(
newQueryExtractor($conn, 'SELECT * FROM books'),
newNoopTransformer(),
newConsoleLoader(
newTable($output = newConsoleOutput())
)
))->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 |
+---------------+--------------------------+------------------+
The following code:
// ...$sql = "SELECT * FROM books WHERE author = :author";
$values = [
[
'parameter' => ':author',
'value' => 'Dante Alighieri',
'data_type' => PDO::PARAM_STR// optional
]
];
(newDefaultPipeline(
newQueryExtractor($conn, $sql, $values),
newNoopTransformer(),
newConsoleLoader(
newTable($output = newConsoleOutput())
)
))->process();Will dump these results to the console:
+---------------+---------------+-----------------+
| 99921-58-10-7 | Divine Comedy | Dante Alighieri |
| 9781847493583 | La Vita Nuova | Dante Alighieri |
+---------------+---------------+-----------------+
The following code:
// ...
(newDefaultPipeline(
newQueryExtractor($conn, 'SELECT * FROM books'),
newNoopTransformer(),
newDbalLoader($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.

