Поставщик подает нам CSV-файл своих продуктов. Отдельным столбцом в файле (например, столбец 3) является номер стиля. Этот файл содержит тысячи записей.
У нас есть таблица данных продуктов с колонкой под названием manufacturer_num, которая является номером стиля вендоров.
Мне нужно найти, какой из продуктов поставщика мы в настоящее время не имеем.
Я знаю, что я могу зацикливать каждую строку в файле CSV и извлекать номер стиля и проверять, находится ли она в нашей базе данных. Но затем я звоню в базу данных для каждой строки. Это будет тысячи вызовов в базу данных. Я думаю, что это неэффективно.
Я мог бы также создать список номеров стилей (либо как строку или массив), чтобы сделать один вызов БД. Что-то вроде: WHERE manufactuer_num IN(...)
Но не будет ли у PHP заканчиваться память, если список слишком велик? И на самом деле это даст мне те, которые у нас есть, а не те, которых у нас нет.
Каков эффективный способ сделать это?
Массовая загрузка CSV во временную таблицу, выполните LEFT JOIN
, затем получите записи, в которых RHS соединения будет NULL
.