Opa,

Sem muito tempo para elaborar uma solução mais interessante, mas segue a
minha:

DO $$

DECLARE

    tabela VARCHAR;

BEGIN

    FOR tabela IN    SELECT table_schema||'.'||table_name FROM
information_schema.tables WHERE table_schema='esquema1' LOOP

        EXECUTE 'ALTER TABLE ' || tabela || ' SET SCHEMA esquema2';

    END LOOP;

END $$;


Em 4 de maio de 2011 09:07, Eloi Ribeiro <[email protected]> escreveu:

>
> 2011/5/4 Fabrízio de Royes Mello <[email protected]>
>
> Se vc realmente deseja *mover* as tabelas vc poderia simplificar da
>> seguinte forma:
>>
>> psql -h localhost -U utilizador bd_nome -A -t -c "select 'ALTER TABLE
>> '||quote_ident(table_schema)||'.'||quote_ident(table_name)||' SET SCHEMA
>> '||quote_ident('sch_origem')||';' from information_schema.tables where
>> table_schema = 'sch_destino' " | psql -h localhost -U utilizador bd_nome
>>
>> Assim elimina a necessidade de dump/restore.
>>
>>
>> Obs: Da forma como vc apresentou vc está "copiando" o conteúdo de um
>> schema para outro... se nao apagar o "sch_origem" da base vc terá ao final
>> os dois.
>>
>
> Uahu! Excelente dica Fabrízio. Tomo nota.
> Tens razao, fiquei com as dados duplicados, pelo menos até estar seguro que
> estaria tudo bem no novo esquema.
> Obrigado.
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a