O PHP divide o arquivo csv grande em vários arquivos pequenos e os nomeia de acordo com o número de sequência.

PHP divide arquivos CSV grandes em vários arquivos pequenos e os nomeia de acordo com números de série.Ele é usado para dividir arquivos CSV grandes em arquivos pequenos e importá-los.

Descrição do código:

  1. Primeiro abra o arquivo A.csv e leia a primeira linha de campos.

  2. Em seguida, defina o tamanho máximo de cada arquivo para 4 MB e inicialize o tamanho do arquivo como 0, o número do arquivo como 1 e o nome do arquivo como B_1.csv.

  3. Em seguida, abra o arquivo de saída B_1.csv e escreva a primeira linha de campos.

  4. Leia os dados do arquivo A.csv em um loop, calcule o tamanho dos dados e, se o tamanho do arquivo exceder o valor máximo, feche o arquivo atual, abra um novo arquivo e escreva a primeira linha de campos.

  5. Finalmente, os dados são gravados e o tamanho do arquivo é atualizado.

<?php
//设置文件路径
$file_path = 'A.csv';

//打开文件
$file = fopen($file_path, 'r');

//读取第一行字段
$fields = fgetcsv($file);

//设置每个文件的最大大小
$max_size = 4 * 1024 * 1024; //4MB

//初始化文件大小
$file_size = 0;

//初始化文件编号
$file_number = 1;

//初始化文件名
$file_name = 'B_' . $file_number . '.csv';

//打开输出文件
$output_file = fopen($file_name, 'w');

//写入第一行字段
fputcsv($output_file, $fields);

//循环读取数据
while (($data = fgetcsv($file)) !== false) {
    //计算数据大小
    $data_size = strlen(implode(',', $data));
    
    //如果文件大小超过最大值,则关闭当前文件,打开新文件
    if ($file_size + $data_size > $max_size) {
        fclose($output_file);
        $file_number++;
        $file_name = 'B_' . $file_number . '.csv';
        while (file_exists($file_name)) {
            $file_number++;
            $file_name = 'B_' . $file_number . '.csv';
        }
        $output_file = fopen($file_name, 'w');
        fputcsv($output_file, $fields);
        $file_size = 0;
    }
    
    //写入数据
    fputcsv($output_file, $data);
    $file_size += $data_size;
}

//关闭文件
fclose($file);
fclose($output_file);
?>

Acho que você gosta

Origin blog.csdn.net/YUJIANYUE/article/details/130773005
Recomendado
Clasificación