Залить csv это хорошая идея.
Эффект limit можно достичь аналитическими функциями, e.g.
select *
from
(
select ROW_NUMBER() OVER (PARTITION BY t.city) as limit_num,
t.city
t. ...
from
(
select city, ...
from my_table m join cities c on c.city = m.city
) as t
) tt
where tt.limit_num <= 1000;