Publicado por jotacomm em 25/10/2008
Olá, pessoal
Quando trabalhamos com os arquivos de log do PostgreSQL, por exemplo, dependendo de como está a configuração (arquivo postgresql.conf) pode ser que sejam gerados vários arquivos de log. Se temos um hd não tão grande isso pode ser um problema.
Descrevo aqui uma forma de remover os arquivos mais antigos e deixar apenas o último arquivo pois o PostgreSQL está escrevendo nele. Uma boa prática poderia ser antes de remover estes arquivos gerar uma cópia em um outro computador ou a gravação dos mesmos em um cd ou dvd.
O comando abaixo faz isso: Apaga os arquivos deixando apenas o arquivo mais recente.
ls -t | grep -v `ls -t | head -n 1` | xargs rm -v
Um exemplo na prática:
O diretório de logs possui os seguintes arquivos:
postgresql-2008-10-24_231829.log
postgresql-2008-10-25_151120.log
postgresql-2008-10-25_151359.log
Executando:
ls -t | grep -v `ls -t | head -n 1` | xargs rm -v
removido `postgresql-2008-10-25_151120.log’
removido `postgresql-2008-10-24_231829.log’
Restou apenas o arquivo postgresql-2008-10-25_151359.log que é o arquivo mais atual.
Fiquem a vontade para comentários.
[]s
Enviado em PostgreSQL/Linux | Tagged: Linux, PostgreSQL | 2 Comentários »
Publicado por jotacomm em 25/10/2008
Olá, pessoal
Para instalar o PostgreSQL no Windows Vista é necessário desabilitar UAC (User Account Control – Controle de Contas de Usuário (Painel de Controle – Contas de Usuário – Ativar/Desativar controle de contas de usuário)).
Depois de realizada a alteração você precisa reiniciar o Windows.
Pronto. Agora você já pode instalar o seu PostgreSQL. Depois de instalado você pode ativar novamente o UAC.
Fiquem a vontade para comentários.
[]s
Enviado em PostgreSQL | Tagged: PostgreSQL, Windows Vista | 2 Comentários »
Publicado por jotacomm em 24/10/2008
Olá, pessoal
Muitas vezes temos tabelas sem chaves primárias (nada recomendável) e com registros duplicados.
Uma pergunta que normalmente surge é: Como fazer para deletar estes registros? Uma solução possível é:
DELETE FROM tabela WHERE tabela.ctid NOT IN (SELECT max(tabela.ctid) FROM tabela GROUP BY tabela.codigo) RETURNING codigo;
Observação 1: O parâmetro RETURNING está disponível a partir da versão 8.2.
Observação 2: Uma boa prática é executar comandos do tipo UPDATE/DELETE dentro de um bloco de transação [1].
[1] http://www.postgresql.org/docs/8.3/interactive/mvcc-intro.html
Fiquem a vontade para comentários.
[]s
Enviado em PostgreSQL | Tagged: PostreSQL, registros duplicados | 2 Comentários »
Publicado por jotacomm em 24/10/2008
Olá, pessoal
Quando por exemplo é realizado no psql uma instrução como:
\dt – mostrar as tabelas
\dn – mostrar os esquemas
Isso na realidade é um meta-comando. Por trás deste meta-comando existe uma consulta ao catalogo (pg_catalog) do PostgreSQL. Para visualizar qual consulta é realizada é necessário habilitar o parâmetro ECHO_HIDDEN.
Exemplo:
\set ECHO_HIDDEN ON
Desta forma todo o meta-comando executado apresentará no psql a consulta que é executada no catalogo do PostgreSQL.
Lembrando que essa alteração é valida somente enquanto a sessão estiver ativa. Para tornar padrão essa modificação é necessário coloca-la arquivo .psqlrc. Este arquivo está localizado no diretório home do usuário (/home/usuario/.psqlrc). Caso o arquivo não exista o mesmo pode ser criado.
Fiquem a vontade para comentários.
[]s
Enviado em PostgreSQL | Tagged: meta-comandos, PostgreSQL, psql | Deixar um comentário »
Publicado por jotacomm em 23/10/2008
Olá, pessoal
Segue abaixo uma forma de descobrir os relacionamentos existentes entre as tabelas de um banco de dados.
O resultado do sql abaixo é: esquema da tabela (PK), tabela (PK), esquema da tabela (FK) e tabela (FK).
PK – Primary Key – Chave primária.
FK – Foreign Key – Chave estrangeira.
SELECT sch1.nspname,
tab1.relname,
sch2.nspname,
tab2.relname
FROM pg_namespace sch1 JOIN pg_class tab1 ON sch1.oid=tab1.relnamespace
JOIN pg_constraint ON tab1.oid=pg_constraint.confrelid
JOIN pg_class tab2 ON pg_constraint.conrelid=tab2.oid
JOIN pg_namespace sch2 ON tab2.relnamespace=sch2.oid
ORDER BY sch1.nspname,
tab1.relname,
sch2.nspname,
tab2.relname;
Fiquem a vontade para comentários.
[]s
Enviado em PostgreSQL | Tagged: PostgreSQL, tabelas de sistema | Deixar um comentário »
Publicado por jotacomm em 23/10/2008
Olá, pessoal
Como todos nós sabemos o PostgreSQL é autocommit, isto é, ao executar qualquer comando SQL automaticamente este comando é efetivado no banco, porém é possível desabilitar este comportamento.
Para alterar o comportamento padrão faz-se: (Lembrando que esta alteração é realizada na seção e via ambiente psql).
\set AUTOCOMMIT OFF
Verificando a modificação:
\echo :AUTOCOMMIT
OFF
Com a modificação do comportamento padrão é necessário executar o comando COMMIT ou o comando END para que a operação SQL seja efetivada no banco. Caso venha a ocorrer algum erro, a seguinte mensagem é apresentada: current transaction is aborted, commands ignored until end of transaction block e a transação automaticamente é abortada.
Se for desejável que a modificação se torne permanente é necessário realizar esta alteração no arquivo .psqlrc. Este arquivo fica localizado no diretório do usuário (/home/usuario/.psqlrc).
Fiquem a vontade para comentários
[]s
Enviado em PostgreSQL | Tagged: autocommit, PostgreSQL | 6 Comentários »