[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: обеденить 2 csv файла по заданным столбцам
Oggy
Здравствуйте. Мне надо объединить 2 csv файла по заданным столбцам. Например перед слиянием юзер выберит из первого файла ключевой столбец SIZE а со второго файла SHIRT_SIZE ключевой столбец если данные одинаковые тогда добвитьть весь ряд в результат файл.
вот что я пробовал:

$csv1 = file('file1.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$csv2 = file('file2.csv', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$lines = max(count($csv1), count($csv2));
$finalcsv = array();
for($i=0; $i<$lines; $i++) {
if(isset($csv1[$i])) $finalcsv[] = $csv1[$i];
if(isset($csv2[$i])) $finalcsv[] = $csv2[$i];
}

file_put_contents('file3.csv', implode(PHP_EOL, $finalcsv));
Ron
Проще наверное работать через MySQL. Либо сразу импортировать CSV с помощью инструментария БД, либо закидывать пакетами из PHP, как в dump файлах делается.

Можно, конечно, читать построчно (fgetcsv), сравнивать, и построчно записывать (fputcsv), всё это в одном цикле, НО! Правила выборки - первое через что проходит ось изменений в подобных случаях, поэтому сразу переложить сие действие на СуБД, на мой взгляд, наиболее правильное решение.

Какой именно вариант выбрать, зависит от задачи и ее логического развития. Она вобщем-то простая, здесь как раз основная сложность в выборе правильного подхода. Изменяется ли формат файлов, возможна ли одновременная работа нескольких человек и т.д. Сама реализация из разряда рутины. =)

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.