[pgbr-geral] passar tabelas de um esquema para outro
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
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/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
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
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
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
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/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
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/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