这是我的问题:我需要在使用php中的fgetcsv解析之前自动从csv文件中删除特定列。如果我不删除那些列(我真的不需要),我会出现内存不足错误。谢谢!
答案 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);
如果您遇到内存问题,更好的选择可能是编写脚本将数据移动到数据库中,然后您可以只查询所需的数据和字段。