Спасибо за помощь.
My Spec:
- У меня очень большой файл CSV
- Мне нужно обработатьфайл и вывод другого большого файла CSV
Моя среда:
- php7.0
- Symfony 3.4 framework
Мое текущее решение:
Я использую Symfony Serializer для чтения моего файла, затем я обрабатываю свой файл и выводю файл.Все в памяти.Операция занимает около 20 минут.
Я запускаю скрипт из команды Symfony.У меня есть служба для чтения файла и служба для экспорта файла.
Улучшенное решение 1:
- Я могу загрузить CSV-файл в таблицу базы данных, как объяснено здесь , с помощью «LOAD DATA»ЛОКАЛЬНЫЙ ИНФИЛЬ "sql запрос.Очень быстрая операция
- Затем я могу обработать свои данные и сохранить их в другой таблице
- Затем я бы использовал "SELECT ... INTO OUTFILE 'file_name'" для вывода файла
Преимущество: -SQL по центру - Нет проблем с памятью
Отключение: -ДБ операции во время обработки могут быть дорогими
Улучшенное решение 2:
- Я могу читать файл CSV строка за строкой
- Я обрабатываю строку
- Я записываю строку в выходной файл
Adv:Нет проблем с памятью. Disav: может занять много времени.
Улучшенное решение 3:
- Я могу загрузить файл CSV в таблицу базы данных, как объяснено здесь , с запросом sql «LOAD DATA LOCAL INFILE».Очень быстрая операция
- Затем я могу обработать свои данные по 1000 штук и записать их в файл
Какое решение вы бы использовали?Или у вас есть лучшее решение?