Разделение TXT-файла на многие CSV-файлы с помощью PHP - PullRequest
0 голосов
/ 05 октября 2011

Итак, я смог разобрать txt-файл в csv-файл

$data = array();
while ($line= fgets ($fh)) {
$stack = array($LAUS,$FIPS,$CountyName,$Date,$_CLF,$_EMP,$_UNEMP,$RATE);
        array_push($data, $stack);
}
$file = fopen('file.csv','w');

foreach ($data as $fields) {
fputcsv($file, $fields,',','"');
 }

fclose($file);

Мой вопрос: как лучше всего создать несколько CSV-файлов, разделенных по месяцам (а также по году, например, Jan01.csv, Jan02.csv).

1 Ответ

1 голос
/ 05 октября 2011

Я немного догадываюсь о форматировании вашей даты

while ($line = fgets ($fh)) {
    // Not sure where you're getting these values, but I'm assuming it's correct
    $stack = array($LAUS,$FIPS,$CountyName,$Date,$_CLF,$_EMP,$_UNEMP,$RATE);

    // Assuming $Date looks like this '2011-10-04 15:00:00'
    $filename = date('My', strtotime($Date)) . '.csv';
    $file = fopen($filename,'a+');
    fputcsv($file, $stack,',','"');
    fclose($file);
}

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

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

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