“如何导出 2000 行数据之后的其他下一个文件”



我正在使用PHP导出CSV文件这是有效的,但是我导出了2000行或更多行如何自动创建下一个CSV文件。

如何在 2000 行之后移动其他文件?

<?php
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename = records.csv');
echo $header = "Name";
echo  "rn";
$sql = mysql_query(“Select * from table”);
while ($getData = mysql_fetch_assoc($sql)) {
   echo '"'.$name.'"';
   echo  "rn";
}
exit;
?>
您可以使用

array_chunk函数来保留 2000 年的记录并以 csv 格式导出。

例如

$rowData = [
    [1,2,3],
    [11,21,31],
    [21,22,32],
    [31,42,73],
    [111,222,333]
];
foreach(array_chunk($rowData, 2) as $key => $records){
   $file_name = 'export_data_'.$key.'.csv';
   writeToCsv($file_name,$records);
}
//funtion to export data to csv
function writeToCsv($fileName, $rowData){
    $fp = fopen($fileName, 'w');
    foreach ($rowData as $fields) {
        fputcsv($fp, $fields);
    }
   fclose($fp);
 }

在您的情况下,请使用array_chunk($rowData, 2000)

<?php
$rowLimit = 2000;
$fileIndex = 0;
$i = 1;
$handle = null;
$fileList = array();
$timestampFolder = strtotime("now").'/';
mkdir($timestampFolder);
$sql = mysql_query("Select * from table");
while ($getData = mysql_fetch_assoc($sql)) {
    if( ($i%$rowLimit) == 1) {
        $fileIndex+=1;
        if(!is_null($handle)) {
            fclose($handle);
        }
        $fileName = "records".$fileIndex.".csv";
        $handle = fopen($timestampFolder.$fileName, "a");
        $fileList[] = $fileName;

    }
    fputcsv($handle, $getData);
    $i++;
}
foreach($fileList as $file) {
    echo '<a href="'.$timestampFolder.$file.'">'.$file.'</a><br>';
}

相关内容

最新更新