mixpo / form-data-exporter
Simple Export Db -> CSV library
Installs: 1 395
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 15
Forks: 0
Open Issues: 1
Requires
- php: >=5.5
- ext-pdo_pgsql: *
- aws/aws-sdk-php: 2.*
Requires (Dev)
- phpunit/phpunit: 4.6.*
- satooshi/php-coveralls: 0.6.1
This package is not auto-updated.
Last update: 2024-03-16 15:00:09 UTC
README
A somewhat specific tool meant to export to CSV, a JSON data column for all rows in a SQL result set.
Status
Install
composer install
phpunit
Usage
<?php $exporter = new FormExporter( 'dsn', // <- PDO DSN string including credentials 'tableName', // <- the table the you wish to export data from 'data', // <- the name of the 'data' column (column that hold the JSON form data) ["client_id" => "12345", "campaign" => "widget-2015"], // <- criteria used to build an AND'ed WHERE clause $logger // <- Psr\Log\LoggerInterface );
You then set the writer engine (file system and S3 are currently supported and run the export
$exporter->setExporterEngine( new FileSystemExporterEngine( 'file:///var/data/csv/leadgen99.csv', // <- full path to the output CSV in <protocol>://<path> format s3://<bucket>/<object-path> is also supported $logger, // <- Psr\Log\LoggerInterface $randomizeFileName = true ) ); $outputCsvFilePath = $exporter->run();
NOTE In the example above the $outputCsvFilePath will have a random seed in it. For instance with
file:///var/data/csv/leadgen99.csv
sent into the ExporterEngine
constructor, $outputCsvFilePath
will be something like: /var/data/csv/leadgen99-55358afdeefa5.csv
To turn off this behavior call set $randomizeFileName = false
Rows with Issues
After calling $exporter->run()
, you can call getIssues()
which will return an array of any rows that had parse
issues and will not be in the CSV output.
<?php $exporter->run(); $issues = $exporter->getIssues(); /** * $issues will be an empty array if there were no issues, but if there were it will look something like this. * [ * [ * "message" => "Expected data field of name: 'form_data', not found for this row", * "row" => ["id" => 2, * "identifier" => "client-xyz", * "tag" => "widget-1-campaign", * "version" => 1, * "created" => "2015-04-16 21:50:39"] * ], * ... * ] **/