Как обновить множество строк sql в одном запросе?
DUPLICATE KEY UPDATE работает по уникальному индексу, который можно (и нужно) навесить на группу полей.
 мне не подходит, так как в файле может быть несколько тысяч строк.
Очень забавная фантазия. Если бы действительно надо было толькообновить множество строк sql в одном запросе
как сказано в заголовке вопроса,  то прекрасно подошел бы этот вариант
Но для задачи при нахождении дубля обновлять, а при отсутствии вставлять. 
подходит ON DUPLICATE KEY UPDATE по уникальному составному ключу.