Как сформировать 1 запрос UPDATE с тысячей значений?
Вот так, и так до 1000 (или сколько Вам будет нужно):
UPDATE table1
SET val = CASE
WHEN id = 1 THEN 10
WHEN id = 2 THEN 20
WHEN id = 3 THEN 30
END
-- тут ещё можно дописать условие, типа WHERE id IN (1,2,3)
По одному запросу посылать не вариант.
По моему, Вы пытаетесь вывернуть бедного дельфина наизнанку
через за... Можно посылать много запросов за 1 раз, разделяя их ";" (точкой с запятой). Более того, их так же можно обернуть в транзакцию (как много запросов по одному, так и много запросов через ";").
P.S. Пример таблицы над которой проводились эксперименты:
(на всякий случай)