Bom dia a todos, Segue abaixo um FAQ que eu escrevi com o objetivo de ajudar a quem usa o Firebird e quer usar também o PostgreSQL. Caso achem interessante, alguém poderia colocar no portal do postgresql.org.br.
-------------------------------------------------------------------------------- P: Tem como desativar Triggers e Índices? R: Diferente do Firebird, no Postgres não é possivel desativar uma Trigger ou um Índice. O que pode ser feito é excluí-los e posteriormente reinclui-los quando necessário. -------------------------------------------------------------------------------- P: Que utilitários estão disponíveis? R: Segue abaixo a lista de alguns utilitários e seu similar em Firebird. PSql: Similar ao ISql pgAdmin3: Similar ao IBConsole EMS SQL Manager: Similar ao IBExpert Slony: Similar ao IB-Replicator PGDump/PGRestore: Similar ao GBAK -------------------------------------------------------------------------------- P: No Firebird cada base de dados fica armazenada em um único arquivo. E no Postgres, onde fica fisicamente armazenada a base de dados? R: No Postgres a base de dados é dividida N arquivos que ficam armazenados no diretório "base", que por sua vez faz parte do "cluster" (diretório) criado para armazenar as bases de dados gerenciadas pelo servidor. -------------------------------------------------------------------------------- P: Quais são os principais arquivoS de configuração? R: São os arquivos "postgresql.conf" (configurações gerais) e "pg_hba.conf" ( configurações de acesso). -------------------------------------------------------------------------------- P: Existe algo similar a opção "external_files" para importar rapidamente dados residentes em arquivo texto? R: Sim. Para isso existe o comando "copy". -------------------------------------------------------------------------------- P: Onde ficam armazenadas as mensagens geradas pelo Postgres? R: As mensagens de inicialização ficam no arquivo "pgstartup.log". Já as mensa- gens de operações realizadas pelo banco ficam em arquivos armazenados no diretório "pg_log". -------------------------------------------------------------------------------- P: Existem instaladores dos binários para Linux? R: Oficialmente existem instaladores somente para RedHat/AS, RedHat/ES e Fedora. Nas demais distribuições é necessário baixar os fontes e compilar. No entanto, independente da distribuição, o ideal é compilar, pois isso deixa o Postgres otimizado para o hardware usado. -------------------------------------------------------------------------------- P: Se alguém fizer uma cópia da base de dados e levá-la para outra máquina, ele poderá acessar os dados, assim como acontece com o FireBird? R: Sim. Mas o mesmo acontece com outros bancos como o Oracle, DB2, etc. -------------------------------------------------------------------------------- P: O tamanho da base de dados à ser criada deve ser definida previamente, ou ela se expande conforme a necessidade? R: Se expande conforme a necessidade. -------------------------------------------------------------------------------- P: Que ferramentas podem ser usadas para fazer as cópias de segurança? R: Use os utilitários "pg_dump" e "pg_restore". -------------------------------------------------------------------------------- P: Como fica o backup das tabelas que possuem campos com conteúdo binário? R: Basta utilizar o "pg_dump" com a opção "-b". -------------------------------------------------------------------------------- P: Como saber se uma base está corrompida? R: vacuumdb -U sysdba -d <nome da base> -v -------------------------------------------------------------------------------- P: Exite alguma ferramenta para reparar bases corrompidas? R: Algumas podem ser encontradas nos seguintes sites: - http://svana.org/kleptog/pgsql/pgfsck.html - http://www.hjackson.org/blog/archives/2004/12/postgresql_data.html -------------------------------------------------------------------------------- P: Em acesso local, é mais rápido usar "localhost" em vez do IP? R: Sim, pois com "localhost" os pacotes não passam pela placa de rede. -------------------------------------------------------------------------------- P: Existem Store-Procedures no Postgres? R: Não. Mas as funções podem desempenhar o mesmo papel. -------------------------------------------------------------------------------- P: Como faço para converter uma Stored-Procedure selecionável (que retorna N linhas)? R: Crie um tipo registro e faça uma função que retorne este tipo. Exemplo: create type RET_FUNCAO as ( Cmp1 numeric(3,0), Cmp2 numeric(9,2), Cmp3 date, Cmp4 varchar(3) ); create or replace function PCD_FUNCAO( Prm_Cmp1 date, Prm_Cmp2 varchar(6) ) returns setof RET_FUNCAO as $$ declare result RET_FUNCAO; begin while ... . . result.Cmp1 := 10; result.Cmp2 := 23.56; result.Cmp3 := '31.12.2099'; result.Cmp4 := 'Abc' return next result; end; return; end; $$ language 'plpgsql'; -------------------------------------------------------------------------------- P: Existe o recurso de levantar, a partir de funções e triggers, uma exceção? R: Sim. Use "raise exception". -------------------------------------------------------------------------------- P: Tudo o que ocorre dentro de uma Função está em uma transação implícita? R: Sim. -------------------------------------------------------------------------------- P: Como apagar o fonte das funções escritas em PgSql? R: Diferente do Firebird, não tem como fazer isso, visto que elas são interpre- tadas pelo Postgres. -------------------------------------------------------------------------------- P: O processo do "Vacuum" irá travar a base? R: Sim, se for usada a opção "-f". -------------------------------------------------------------------------------- P: Qualquer erro dento de uma transação irá aborta-lá? S: Sim. Será efetuado um "rollback". -------------------------------------------------------------------------------- P: Qual é o formato padrão de data? Tem como alterar? R: É o americano. Para alterar deve-se incluir no arquivo "postgresql.conf" o parâmetro "datestyle". Exemplo: datestyle = 'European' -------------------------------------------------------------------------------- P: Quais são os formatos de data e hora que podem ser usados? R: "dd/mm/aaaa", "dd.mm.aaaa", "aaaa-mm-dd" e "dd-mm-aaaa" para datas e "hh:mm:ss" para horas. -------------------------------------------------------------------------------- P: Existe data zero? R: Não. Do mesmo modo como o FireBird. -------------------------------------------------------------------------------- P: Que tipo de campo deve ser usado para armazenar dados binários? R: Use o tipo "bytea". -------------------------------------------------------------------------------- P: Que tipo de campo deve ser usado para armazenar textos longos? R: Use o tipo "text". -------------------------------------------------------------------------------- P: Para que serve o OID? É necessário usá-lo. R: É um identificador único para cada registro. Pode ser usado para fazer rela- cionamento de registro entre tabelas. Se ele for usado para isso, no proces- so de backup deve ser especificado para que esta informação seja gerada junto com os dados. -------------------------------------------------------------------------------- P: Quanto tempo leva para respoder quando é gerado um "deadlock"? Na hora ou somente quando é encerrada (commit) a transação que está bloqueando o regis- tro? R: Somente quando é encerrada. Mas, ao contrário do Firebird, não gera "DeadLock". Passa a valer a alteração feita pela última transação efetuada. -------------------------------------------------------------------------------- P: Como são classificados os campos com conteúdo NULO? R: É igual ao do Firebird, ou seja, o valor nulo classifica-se mais alto do que outro valor. -------------------------------------------------------------------------------- P: Como comportam-se funções de agregação (SUM, etc) quando existe nulos? R: Os valores nulos não são considerados. -------------------------------------------------------------------------------- P: Como comportam-se cálculos contendo campos nulos (Ex: 1 + null)? R: Qualquer operação em que um dos valores seja "null" o resultado será sempre "null". Para evitar isso, pode ser utilizada a função "coalesce". -------------------------------------------------------------------------------- P: Como executar funções que não retornam valores? R: Use o comando "perform". -------------------------------------------------------------------------------- P: Existe algum conversor de base do Firebird para Postgres? R: Existem algumas ferramentas, como o CaseStudio e o DBManager, que fazem enge- nharia reversa permitindo assim montar uma base em Postgres a partir de outra do Firebird. No entanto nenhuma faz a conversão de Store-Procedures e Triggers. Portanto a conversão destas deve ser feita manualmente ou atravez de uma fer- ramenta desenvolvida internamente. -------------------------------------------------------------------------------- P: Em um "select ... into", se a consulta retornar 0 linhas, que valores serão gravados nas variáveis de destino? R: Serão gravados valores nulos nas variáveis destinos. Já no Firebird, neste caso não é alterado o conteúdo das variáveis. -------------------------------------------------------------------------------- P: Quando é feita uma consulta envolvendo agrupamento (group by), no Firebird a lista retorna ordenada conforme os campos do agrupamento. Como isso funciona no Postgres? R: Já no PGS isso não ocorre. Portanto, quando for utilizar uma consulta com agrupamento e deseja que os dados retornem ordenados, é necessário usar a clausula "order by". -------------------------------------------------------------------------------- Sem mais, Marlon David de Souza Desenvolvimento Sysmo Informática Ltda _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral