pllano / csv
分部分读取非常大的CSV文件
1.0.2
2017-12-11 11:23 UTC
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2024-09-29 05:48:24 UTC
README
在PHP中分部分读取csv文件中的大量数据
系统需求
您需要 *PHP >= 5.3
安装
使用Composer安装Csv Reader
。
$ composer require pllano/csv
或者在composer.json中
"require": {
"pllano/csv": "1.0.2"
}
快速开始 => tests/FastStart.php
将上述代码片段保存为test.php
在您的Web根目录中。
require 'vendor/autoload.php'; // require_once '/vendor/pllano/csv/src/Reader.php'; // require_once __DIR__.'/src/Reader.php'; $filename = 'test.csv'; $csv = new Pllano\Csv\Reader($filename); $records = $csv->Read(); $count = count($records); if ($count >= 1) { foreach ($records as $item) { print_r($item); print_r('<br>'); } }
读取一行 => tests/ReadOneLine.php
require 'vendor/autoload.php'; // require_once '/vendor/pllano/csv/src/Reader.php'; // require_once __DIR__.'/src/Reader.php'; $filename = 'test.csv'; $csv = new Pllano\Csv\Reader($filename); $csv->setItemStart(10); $csv->setExecute(1); $records = $csv->Read(); print_r($records); /* Array ( [0] => Array ( [name] => Lorem [number] => 11 [price] => 22.00 ) ) */
实际行键 => tests/RealLineKey.php
require 'vendor/autoload.php'; // require_once '/vendor/pllano/csv/src/Reader.php'; // require_once __DIR__.'/src/Reader.php'; $filename = 'test2.csv'; $csv = new Pllano\Csv\Reader($filename); $csv->setItemStart(10); // start item - default: 1 $csv->setExecute(50); // amount - default: 0 $records = $csv->Read(); $item_start = $csv->getItemStart(); // returns 0 $count = count($records); if ($count >= 1) { foreach ($records as $key => $item) { $real_key = $key + $item_start; print_r($real_key); print_r(' - '); print_r($item); print_r('<br>'); } }
示例 => tests/ReadRefresh.php
function clean($value = '') { $value = trim($value); $value = stripslashes($value); $value = strip_tags($value); $value = htmlspecialchars($value, ENT_QUOTES); // $value = htmlentities($value); return $value; } $filename = 'test.csv'; $start = 0; $rows_total = 0; if ($_GET["filename"]) {$filename = clean($_GET["filename"]);} if ($_GET["start"]) {$start = clean($_GET['start']);} // Include Composer autoloader if not already done. require 'vendor/autoload.php'; // require_once '/vendor/pllano/csv/src/Reader.php'; // require_once __DIR__.'/src/Reader.php'; $csv = new Pllano\Csv\Reader($filename); // $csv->setDelimiter(';'); // default: ; // $csv->setEnclosure('"'); // default: " // $csv->setEscape('\\'); // default: \\ // $csv->setHeaders('name;number;price'); // default: null $csv->setItemStart($start); // start item - default: 0 $csv->setExecute(10); // amount - default: 0 // $csv->setTimeLimit(29); // Monitoring the execution time of the script in seconds set_time_limit // $csv->setAutoDetection(false); // Auto Detection Delimiter false|true - default: false $stop = 500; $records = $csv->Read(); $count = count($records); if ($count >= 1) { foreach ($records as $item) { print_r($item); print_r('<br>'); } } $rows_total = $csv->countItems(); // returns total items // $csv->getHeaders(); // returns Array ( [0] => name [1] => number [2] => price ) // $csv->getItemStart(); // returns string // $csv->getExecute(); // returns amount 10 $end = $csv->getItemEnd(); // returns 11 // $csv->getAutoDetection(); // returns false|true // $csv->getCsvControl(); // returns Array ( [0] => ; [1] => " [2] => \ ) if ($filename && $end >= 0 && $rows_total >= 0) { if ($end <= $rows_total && $end <= $stop) { // start //site.com/test.php print '<meta http-equiv="Refresh" content="0; url=/test.php?filename='.$filename.'&start='.$end.'">'; } if ($end >= $stop || $end >= $rows_total) { print_r('<br>'); print_r('Memory, MB: '.$csv->getMemory()); print_r('<br>'); print_r('Time, sec: '.$csv->getTime()); } }
安全
如果您发现任何与安全相关的问题,请通过电子邮件发送到 open.source@pllano.com,而不是使用问题跟踪器。
许可证
MIT许可证(MIT)。有关更多信息,请参阅LICENSE。