2011-03-11 7 views
0

내 문제는 : PHP에서 fgetcsv를 사용하여 구문 분석하기 전에 csv 파일에서 특정 열을 자동으로 삭제해야합니다. 만약 내가 정말 열 필요가 없어 그 열을 삭제하지 않으면, 나는 메모리 부족 오류가 발생합니다. 감사!csv 파일에서 열을 자동으로 삭제

답변

3

명령 줄 옵션 일지 모르겠지만 그렇다면 cut 명령으로 하루를 절약 할 수 있습니다. 메모리가 부족한 경우 실제로는 PHP로로드하기 전에 cut으로 csv를 처리 할 수 ​​있습니다.

my.csv

a;b;c;d; 
0;1;2;3; 
0;1;2;3; 
0;1;2;3; 
0;1;2;3; 
0;1;2;3; 
0;1;2;3; 
0;1;2;3; 
0;1;2;3; 
0;1;2;3; 

명령 : 세 번째 열을

cut -d ";" -f1-2,4- my.csv 

출력을 제거

a;b;d; 
0;1;3; 
0;1;3; 
0;1;3; 
0;1;3; 
0;1;3; 
0;1;3; 
0;1;3; 
0;1;3; 
0;1;3; 
1

간단한 PHP 스크립트를 사용하면 필드를 설정 해제하여 출력 파일에서 제거 할 수 있습니다.

이 예는 $inFile에서 두번째 필드를 제거하고 $outFile

<?php 
$read = fopen($inFile, 'r'); 
$write = fopen($outFile, 'w'); 
if ($write && $read) { 
    while (($data = fgetcsv($read)) !== FALSE) { 
     unset($data[1]); 
     fputcsv($write, $data); 
    } 
} 
fclose($write); 
fclose($read); 

에 결과를 저장하면 비록 메모리에 문제가있는 경우, 더 나은 대안은로 데이터를 이동하는 스크립트를 작성할 수 있습니다 데이터베이스가 있으면 필요한 데이터와 필드 만 쿼리 할 수 ​​있습니다.

관련 문제