>  기사  >  백엔드 개발  >  PHP에서 수백만 개의 데이터를 CSV로 작성하는 방법에 대해 이야기합시다.

PHP에서 수백만 개의 데이터를 CSV로 작성하는 방법에 대해 이야기합시다.

藏色散人
藏色散人앞으로
2022-12-30 16:13:444498검색

이 기사는 PHP+csv에 대한 관련 지식을 제공합니다. 주로 PHP에서 스크립트 파일을 통해 수백만 개의 데이터를 작성하는 방법을 살펴보겠습니다.

PHP에서 수백만 개의 데이터를 CSV로 작성하는 방법에 대해 이야기합시다.

요구 사항:

수백만 개의 데이터가 csv에 기록되었습니다.

프레임워크:

N 수년 전의 오래된 프레임워크는 바이두에서 더 이상 찾을 수 없으므로 작성 방법이 원본에 더 가깝습니다.

분석:

데이터의 양이 너무 많고, 브라우저는 csv 다운로드에 쓰기를 요청하는 데 사용할 수 없으므로 스크립트 호출

의사 코드:

//xxx - 根据自己项目替换
//调取脚本文件
exec(xxx);

//脚本文件
//设置执行时间和内存
set_time_limit(0);
ini_set('memory_limit', '128M');
//循环获取
$id = 0;
$data = 'xxx'.'\n';//表头
while(true){
    //SQL
    $list = xxx WHERE id > $id ORDER BY id ASC LIMIT 10000; //每次取1w防止数据库压力大,根据sql来,我这个有联表,
    if(empty($list)){
        break;
    }
    foreach($list as $row){
        $data .= '"' . $row['xxx'] . '",';
        $data .= "\n";
        $id = $row['id'];//更新最大id
    }
    //追加写入csv
    file_put_contents('xxx', mb_convert_encoding($data, 'gbk'),FILE_APPEND);
    unset($data);//基础不好不确定初始化能不能清内存就先unset了
    $data = '';//初始化
}

는 본질적으로 일괄 쓰기입니다. 처음 테스트를 시작할 때 나중에 루프에 file_put_contents를 쓰지 않을 계획이었습니다. 데이터 양이 많을 경우 $data의 메모리가 수십만 개를 초과하는 것으로 나타났습니다. 또한 데이터가 100만 개를 초과하는 경우 별도의 파일로 내보내야 합니다. Excel에서는 1048576행 이상 열기를 지원하지 않습니다. 이론적으로는 $all_count 매개변수를 추가하여 현재 쿼리의 총 개수를 계산할 수 있습니다. 1백만 개를 초과하면 새 파일을 추가하세요.

더 나은 방법이나 코드 최적화가 있다면 토론해 주세요.

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP에서 수백만 개의 데이터를 CSV로 작성하는 방법에 대해 이야기합시다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제