автоматически удалять столбцы из CSV-файла - PullRequest
0 голосов
/ 11 марта 2011

Вот моя проблема: мне нужно автоматически удалять определенные столбцы из CSV-файла перед его анализом с помощью fgetcsv в php. Если я не удаляю эти столбцы (которые мне действительно не нужны), я получаю ошибку нехватки памяти. Спасибо!

Ответы [ 2 ]

3 голосов
/ 11 марта 2011

Я не знаю, является ли опция командной строки, но если это так, команда cut спасет ваш день.Если у вас не хватает памяти, вы можете обработать свой CSV с cut перед фактической загрузкой его с 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 голос
/ 11 марта 2011

Используя простой php-скрипт, вы можете удалить поле, чтобы удалить его из выходного файла.

В этом примере удаляется 2-е поле из $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);

Если у вас проблемы с памятью, то лучшей альтернативой может быть написание сценария для перемещения данных в базу данных, тогда вы можете запросить только те данные и поля, которые вам нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...