Могу ли я использовать postgres_fdw без определения сторонних таблиц? - PullRequest
0 голосов
/ 27 августа 2018

У меня есть производственная база данных "PRODdb1" с учетной записью только для чтения. Мне нужно запросить (выбрать оператор) эту базу данных и вставить данные во вторичную базу данных с именем "RPTdb1". Изначально я планировал просто создать временную таблицу в PRODdb1 из моего выбора, но проблема в разрешениях.

Я прочитал о abb dblink & postgres_fdw, но являются ли они решением моей проблемы? Я не буду создавать сторонние таблицы, потому что мой SELECT объединяет множество таблиц из PRODdb1, поэтому я не знаю, будет ли postgres_fdw все еще использоваться для моего варианта использования.

Другим вариантом может быть любое средство получения результатов SELECT в файл .CSV или что-то в этом роде. Мой главный блокировщик в том, что у меня есть только пользователь с правами только для чтения, но я не могу обойти эту проблему.

1 Ответ

0 голосов
/ 31 октября 2018

Простой ответ - нет. Вы не можете использовать postgres_fdw без определения сторонней таблицы в вашем RPTdb1. Это не должно быть большой проблемой, поскольку довольно легко создавать внешние таблицы.

Я в той же лодке, что и ты. Мы используем сторонний продукт (на основе Postgres 9.3) для нашей производственной базы данных, и роли пользователей у нас очень ограничены (то есть доступ только для чтения, нет репликации, нет возможности создавать триггеры / функции / таблицы / и т. Д.).

Я считаю, что postgres_fdw обладает той функциональностью, которую вы ищете, с одним предупреждением. Ваш локальный сервер отчетов должен работать под управлением PostgreSQL версии 10 (или как минимум 9.6). В настоящее время мы используем 9.3 на нашем локальном сервере, и хотя простые запросы работают прекрасно, все более сложное занимает вечность, потому что FDW в 9.3 пытается извлечь все данные в таблице, прежде чем сможет выполнить JOINs или даже использовать оператор WHERE.

версия 9.6: отправляет JOIN в удаленную базу данных перед возвратом результатов.

версия 10. Перед отправкой результатов отправляет агрегаты, такие как COUNT и SUM, в удаленную базу данных.

(Я не уверен, в какой версии добавлена ​​возможность передавать операторы WHERE в удаленную БД, но я знаю, что это было невозможно в 9.5).

На этой неделе мы находимся в процессе обновления нашего локального сервера до версии 10. Я могу стараться держать вас в курсе наших достижений, не стесняйтесь делать то же самое.

...