2011-03-11 131 views
0

這是我的問題:我需要自動刪除csv文件中的特定列,然後在php中使用fgetcsv解析它。如果我不刪除那些列(我真的不需要),我會發現內存不足的錯誤。謝謝!自動從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); 

如果您有內存問題,雖然,一個更好的選擇可能是編寫一個腳本來將數據移動到數據庫,那麼你可以只查詢你需要的數據和字段。