[pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico Eloi Ribeiro
Olá à lista,

Tive a necessidade de mover umas tabelas (60 aprox.) de um esquema para
outro e fiz da maneira que detalho mais a baixo.

No entanto, sendo um novato nestas andanças, não estou seguro que seja um
procedimento correto e gostaria saber se acarreta algumas implicações
negativas para o desempenho da base de dados.

Estes foram os passos dados:

# dump
/usr/bin/pg_dump --host localhost --port 5432 --username utilizador --format
plain --column-inserts --no-owner --verbose --file /home/user/ficheiro.sql
--schema 'sch_origem' bd_nome

# mudar o nome do esquema de origem pelo de destino
sed 's/sch_origem/sch_destino/g' ficheiro.sqlficheiro2.sql

# subir as tabelas ao novo esquema
psql -h localhost -U utilizador -d bd_nome -f ficheiro2.sql

O que posso dizer é que por agora funciona tudo bem.

Obrigado,

Eloi Ribeiro
GIS Analyst
39,45º -4,40º
http://eloiribeiro.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico Fabrízio de Royes Mello
Em 4 de maio de 2011 07:50, Eloi Ribeiro eloi.ribe...@gmail.com escreveu:


 # dump
 /usr/bin/pg_dump --host localhost --port 5432 --username utilizador
 --format plain --column-inserts --no-owner --verbose --file
 /home/user/ficheiro.sql --schema 'sch_origem' bd_nome

 # mudar o nome do esquema de origem pelo de destino
 sed 's/sch_origem/sch_destino/g' ficheiro.sqlficheiro2.sql

 # subir as tabelas ao novo esquema
 psql -h localhost -U utilizador -d bd_nome -f ficheiro2.sql


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.

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.com
 Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico Eloi Ribeiro
2011/5/4 Fabrízio de Royes Mello fabriziome...@gmail.com

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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico JotaComm
Opa,

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

DO $$

DECLARE

tabela VARCHAR;

BEGIN

FOR tabela INSELECT 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 eloi.ribe...@gmail.com escreveu:


 2011/5/4 Fabrízio de Royes Mello fabriziome...@gmail.com

 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
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico Joao Cosme de Oliveira Junior

 Mandando um dump com um sedpg_dump . | sed 's/esquema_antigo/esquema_novo/g ' | psql -U ..João Cosme de Oliveira Júnior


"Lembre-se que da conduta de cada um depende o destino de todos."


Em 04/05/2011 às 11:22 horas, pgbr-geral@listas.postgresql.org.br escreveu: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 eloi.ribe...@gmail.com escreveu:
2011/5/4 Fabrízio de Royes Mello fabriziome...@gmail.com

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 dicaFabrí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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Abraços-- JotaCommhttp://jotacomm.wordpress.com



-


Esta mensagem do SERVIO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), empresa pblica federal regida pelo disposto na Lei Federal n 5.615,  enviada exclusivamente a seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional. Sua utilizao desautorizada  ilegal e sujeita o infrator s penas da lei. Se voc a recebeu indevidamente, queira, por gentileza, reenvi-la ao emitente, esclarecendo o equvoco.

This message from SERVIO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a government company established under Brazilian law (5.615/70) -- is directed exclusively to its addressee and may contain confidential data, protected under professional secrecy rules. Its unauthorized use is illegal and may subject the transgressor to the laws penalties. If youre not the addressee, please send it back, elucidating the failure.



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico Euler Taveira de Oliveira
Em 04-05-2011 11:31, Joao Cosme de Oliveira Junior escreveu:
   Mandando um dump com um sed

 pg_dump . | sed 's/esquema_antigo/esquema_novo/g ' | psql -U ..

A melhor solução é ALTER TABLE foo SET SCHEMA bar. Soluções com sed podem 
fazer alterações indesejadas (comandos, nome de tabelas, nome de colunas e 
dados do cliente).


-- 
   Euler Taveira de Oliveira - Timbira   http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico Joao Cosme de Oliveira Junior

sim logico !:Pmas e uma opcao, se vc tiver um schema vendas clientes... ai lascou mas se tiver algum padrao tranquiloJoão Cosme de Oliveira Júnior

Chefe de setor de Administração de TIC-RFB/POA

"Lembre-se que da conduta de cada um depende o destino de todos."


Em 04/05/2011 às 11:37 horas, pgbr-geral@listas.postgresql.org.br escreveu:2011/5/4 Joao Cosme de Oliveira Junior joao.co...@serpro.gov.br: Mandando um dump com um sed pg_dump . | sed 's/esquema_antigo/esquema_novo/g ' | psql -U ..Meio arriscado esse sed, principalmente se o nome do schema for comum.-- Reinaldo de Carvalhohttp://korreio.sf.net
http://python-cyrus.sf.net

"While not fully understand a software, don't try to adapt this
software to the way you work, but rather yourself to the way the
software works" (myself)
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



-


Esta mensagem do SERVIO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO), empresa pblica federal regida pelo disposto na Lei Federal n 5.615,  enviada exclusivamente a seu destinatrio e pode conter informaes confidenciais, protegidas por sigilo profissional. Sua utilizao desautorizada  ilegal e sujeita o infrator s penas da lei. Se voc a recebeu indevidamente, queira, por gentileza, reenvi-la ao emitente, esclarecendo o equvoco.

This message from SERVIO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO) -- a government company established under Brazilian law (5.615/70) -- is directed exclusively to its addressee and may contain confidential data, protected under professional secrecy rules. Its unauthorized use is illegal and may subject the transgressor to the laws penalties. If youre not the addressee, please send it back, elucidating the failure.



___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico Eloi Ribeiro
2011/5/4 Joao Cosme de Oliveira Junior joao.co...@serpro.gov.br

 mas e uma opcao, se vc tiver um schema vendas clientes... ai lascou mas
 se tiver algum padrao tranquilo



OK, neste caso o nome do esquema nao é comum. Tomo nota da advertencia, nao
me tinha dado conta desse perigo.


2011/5/4 Euler Taveira de Oliveira eu...@timbira.com

 A melhor solução é ALTER TABLE foo SET SCHEMA bar. Soluções com sed podem
 fazer alterações indesejadas (comandos, nome de tabelas, nome de colunas e
 dados do cliente).


Basta executar essa sentencia SQL para cada uma das tabelas?

*ALTER TABLE esquema_origem.tabela1 SET SCHEMA esquema_destino;*

Obrigado por todo o aportado!
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico JotaComm
Sim,

Em 4 de maio de 2011 12:53, Eloi Ribeiro eloi.ribe...@gmail.com escreveu:

 2011/5/4 Joao Cosme de Oliveira Junior joao.co...@serpro.gov.br

 mas e uma opcao, se vc tiver um schema vendas clientes... ai lascou
 mas se tiver algum padrao tranquilo



 OK, neste caso o nome do esquema nao é comum. Tomo nota da advertencia, nao
 me tinha dado conta desse perigo.


 2011/5/4 Euler Taveira de Oliveira eu...@timbira.com

 A melhor solução é ALTER TABLE foo SET SCHEMA bar. Soluções com sed podem
 fazer alterações indesejadas (comandos, nome de tabelas, nome de colunas e
 dados do cliente).


 Basta executar essa sentencia SQL para cada uma das tabelas?

 *ALTER TABLE esquema_origem.tabela1 SET SCHEMA esquema_destino;*


Porém, assim você para uma única tabela. Eu mostrei nesta thread como fazer
para mais de uma tabela ao mesmo tempo.


 Obrigado por todo o aportado!

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



Abraços
-- 
JotaComm
http://jotacomm.wordpress.com
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] passar tabelas de um esquema para outro

2011-05-04 Por tôpico Eloi Ribeiro
2011/5/4 JotaComm jota.c...@gmail.com
 Sim,
 Porém, assim você para uma única tabela. Eu mostrei nesta thread como fazer 
 para mais de uma tabela ao mesmo tempo.

OK, cool!
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral