Jota Comm

SQL and Linux

  • Agenda

    Novembro 2009
    S T Q Q S S D
    « Set    
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    30  
  • Twitter

Removendo arquivos com exceção do mais recente

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: , | 2 Comentários »

Instalando o PostgreSQL no Windows Vista

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: , | 2 Comentários »

Removendo registros duplicados

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: , | 2 Comentários »

Visualizando meta-comandos do psql

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: , , | Deixar um comentário »

Listando tabelas e seus relacionamentos

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: , | Deixar um comentário »

PostgreSQL – Desabilitando o autocommit

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: , | 6 Comentários »