Повесь ситуацию на 2. SQL на DBLINK - PullRequest
0 голосов
/ 26 февраля 2020

Я на версии 12 - на Windows

Когда я запускаю это, я получаю зависание во втором SELECT на том же соединении: я попытался dblink_connect & disconnect в комбинации varoius - и назвав мои соединения - но не повезло.

Мне нужно l oop через все базы данных и извлечь некоторую информацию - это всего лишь пример из 10 или около того запросов, которые мне нужно выполнить для каждой базы данных

Что я делаю не так:

CREATE EXTENSION IF NOT EXISTS dblink;

do   --- anynym kodeblock med do $$, ned til end $$
$$
DECLARE database_name TEXT;
DECLARE conn_template TEXT;
DECLARE conn_string TEXT;

begin
        -- definer temp tabellen
        drop  table if exists mette_temp_vacuum;
        create temporary table mette_temp_vacuum as 
             select  '' dbname, max(last_vacuum) last_vacuum, max(last_autovacuum)last_autovacuum ,
                               max(last_analyze) last_analyze,max(last_autoanalyze) last_autoanalyze
             from pg_stat_user_tables
             where 1 = 2;
        truncate table mette_temp_vacuum;

        drop  table if exists mette_temp_top10;
        create temporary table mette_temp_top10 as 
             select null dbname, schemaname ,  relname ,
                  (pg_total_relation_size(relid)) as total_size,
                  (pg_relation_size(relid)) as data_size,
                  (pg_total_relation_size(relid) - pg_relation_size(relid)) as external_size
             from pg_catalog.pg_statio_user_tables
             where 1 = 2;
        truncate table mette_temp_top10;

    conn_template = 'user=postgres password=mette dbname=';

    FOR database_name IN
        SELECT datname FROM pg_database
        WHERE datistemplate = false
    loop
        conn_string = conn_template || database_name;

        insert into mette_temp_vacuum
         select * from dblink(conn_string, 
                     'select  '''|| database_name || ''' dbname, max(last_vacuum), max(last_autovacuum) , 
                              max(last_analyze) ,max(last_autoanalyze) from pg_stat_user_tables')
                     as t1(dbname text, last_autovacuum timestamp with time zone, last_autoanalyze timestamp with time zone, 
                           last_vacuum timestamp with time zone, last_analyze timestamp with time zone) ;

        /*       results in a HANG .... whn not commented out          
         insert into mette_temp_top10
                select * from dblink( conn_string,
                     'select  '''|| database_name || ''' dbname, schemaname ,  relname ,
                      (pg_total_relation_size(relid)) as total_size,
                      (pg_relation_size(relid)) as data_size,
                      (pg_total_relation_size(relid) - pg_relation_size(relid)) as external_size
                    from pg_catalog.pg_statio_user_tables
                    order by pg_total_relation_size(relid) desc,
                    pg_relation_size(relid) desc
                    limit 10')
         as t1(dbname text,  schemaname text, relname text, total_size decimal, data_size decimal , external_size decimal) ;
         */
    end loop;

END
$$


1 Ответ

0 голосов
/ 27 февраля 2020

Когда я использовал PGADMIN4, он зависает - когда я использую PSQL, он работает как шарм ...

Обратите внимание: всегда проверяйте также PSQL !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...