Чем в php можно быстро разобрать большой xls файл?
Надо на сервере сделать импорт xls файла размерностью 30-50 тыс строк на 20 колонок. Файл очень простой, только цифры и даты. PHPExel с отключенными наворотами и включенным кэшем крутит его около 5 минут, что совершенно неприемлемо. Пока самый быстрый вариант — xls-reader, он работает примерно в два раза быстрее, но все равно это слишком долго.
Кто-нибудь решал такое чудо?
load data local infile 'c:\input.csv' into table people character set utf8 fields terminated by ';' enclosed by '"' lines terminated by '\r\n' (id, first_name, last_name, passport_number);
Второй вариант предпочтительнее, а дальше там с mysql таблицей проще будет.
Вопрос, а какого быстродействия вы хотите достичь?
Сервер достаточно мощный?
Ипи время ограничено в 30 секунд?
Можно расстреливать вычисления, в любом случае.
То есть в одном потоке читать строку от и до.
Никаких технологических ограничений нет, можно хоть 10 мин этот файл парсить. Доступ к php.ini у меня есть, так что и 30 сек — не время. MySQL забывает коннект, но это тоже невелика проблема. Сервер так себе — 2ГГц, 4Мб. И xls и так у меня без записи в файл, строкой живет от начала до конца.
Т.е. разумных аргументов почему хочу хочу быстрее — нет. Просто как-то сильно не нравится. Сам Exel открывает же этот файл за пару секунд. Слишком радикальная разница во времени.
если операция разовая то смысла тут нету. Лучше, как предлагалось выше, перегнать в CSV бинарником и потом обрабатывать как массив данных через какой underscore.php или же просто через map/reduce. А там уже с данными обработанными можно делать угодно.