自动删除csv文件中的列

时间:2011-03-11 07:30:23

标签: php shell

这是我的问题:我需要在使用php中的fgetcsv解析之前自动从csv文件中删除特定列。如果我不删除那些列(我真的不需要),我会出现内存不足错误。谢谢!

2 个答案:

答案 0 :(得分:3)

我不知道命令行是否是一个选项,但如果是这样,cut命令将节省您的一天。如果你的内存不足,你可能想用cut处理你的csv,然后再用php加载它。

<强> 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 :(得分: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);

如果您遇到内存问题,更好的选择可能是编写脚本将数据移动到数据库中,然后您可以只查询所需的数据和字段。