Подскажите пожалуйста, как корректно реализовать парсер данных. Описание: Имею длинный список, все данные из этого списка удаляются раз в месяц, так что довольно длинный получается. Ранее толком персерами не занимался, интересует логика сего. В данный момент:(в каждой строчке списка указано id время кол-во имя)
Открываем файл.
Создаю подключения с БД.
цикл{
выбираю строку
проверяю не пуста ли она
запрашиваю из таблицы данные(обычный select сравниваю по id и времени)
если запись в базе присутствует, переходим к следующей строке
если нет, то заносим в базу данных данные из строки.
}
закрыли подключение.
закрыли файл.
Меня пугает получившееся в итоге куча mysql запросов... Что скажете по этому поводу?
Посмотрите в сторону MERGE в SQL и ее аналога в MySQL (INSERT ... ON DUPLICATE KEY UPDATE). Как минимум это уже сократит ваши запросы к БД: проверка будет выполняться на стороне БД.
Второй вариант - писать все данные подряд во вспомогательную (временную) таблицу, не думая о дубликатах. Дубликаты отлавливать позже на стороне БД.
Третий вариант - обработать файл, подготовить массив, отфильтровав дубликаты, потом писать в БД.
Все сильно зависит от конкретных условий: частоты выполнения скрипта, размера файла.
UPD. LOAD DATA INFILE - для быстрого заливания данных в БД из текста (можно и без парсера обойтись в вашем случае - границы между полями и записями жестко заданы). Тогда алгоритм такой:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть таблица (выше)Необходимо выбрать записи по полю "data" с 2013-06-17 по 2013-06-24, чтобы в результате выводились уникальные записи по полю "id2", и что...