PHP は、大きな csv ファイルを複数の小さなファイルに分割し、シーケンス番号に従ってそれらのファイルに名前を付けます。

PHP は、大きな csv ファイルを複数の小さなファイルに分割し、シリアル番号に従って名前を付けます。大きな csv ファイルを小さなファイルに分割してインポートするために使用されます。

コードの説明:

  1. まず、A.csv ファイルを開き、フィールドの最初の行を読み取ります。

  2. 次に、各ファイルの最大サイズを 4MB に設定し、ファイル サイズを 0、ファイル番号を 1、ファイル名を B_1.csv に初期化します。

  3. 次に、出力ファイル B_1.csv を開き、フィールドの最初の行を書き込みます。

  4. A.csv ファイル内のデータをループで読み取り、データ サイズを計算し、ファイル サイズが最大値を超えた場合は、現在のファイルを閉じ、新しいファイルを開いて、フィールドの最初の行を書き込みます。

  5. 最後に、データが書き込まれ、ファイル サイズが更新されます。

<?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);
?>

おすすめ

転載: blog.csdn.net/YUJIANYUE/article/details/130773005