Быстрое обновление, на случай если кто-то захочет улучшить скрипт из первого поста.
На самом деле можно извлечь все данные за один раз, и это, похоже, не зависит от объёма данных ![]()
(Я провёл стресс-тест на достаточно крупной таблице posts с колонками id и raw, и скрипт справился!)
Пример запроса:
SELECT 'id'
|| string_agg(E'\n' || case when posts.id::text is null then '-1' else posts.id::text end
,''
ORDER BY posts.id asc) as value
FROM posts
При запуске он выведет ваш почти-CSV файл как одно значение, то есть на одной странице. Затем нужно будет убрать value" и ещё одну " в конце, и получится полезный CSV:
Естественно, вы можете добавить больше данных, включив новую колонку для CSV-файла и соответствующие данные для неё:
SELECT 'id,newcolumn'
|| string_agg(E'\n' || case when posts.id::text is null then '-1' else posts.id::text end
|| string_agg(E'\n' || case when posts.newcolumn::text is null then '-1' else posts.newcolumn::text end
,''
ORDER BY posts.id asc) as value
FROM posts
После обновления для поддержки такого запроса Power BI не потребуется переходить между несколькими страницами, что ускорит извлечение данных.
