Tag: sql

Como criar listas sequenciais no PostgreSQL com a função generate_series

Essa é uma dica bem especifica, mas que provavelmente vai ser útil em algum momento na vida de um programador e/ou DBA.

Como criar uma lista sequencial a partir de dados que não existem em uma tabela? Por exemplo: eu quero criar um select que retorne uma lista de 1 a 100 (cada número em uma linha). Como fazer isso? Veja aqui o exemplo:

select generate_series(1,100) as sequencia

Acho que não precisa nem explicar né? O primeiro parâmetro do generate_series é o início da lista, e o segundo o é o fim da lista.

Quer outro exemplo? Imagine que seu gerente pediu pra totalizar as vendas diárias do mes de abril de 2012, ou seja, trazer uma lista com quanto vendeu em cada dia. Mas tem um problema: no dia 3 não vendeu nada. Como você vai exibir um total de um dado que não existe? O generate_series vai te ajudar! Veja o exemplo:

select generate_series(0,29) + date '2012-04-01' as data

O select acima vai trazer uma lista com todos os dias de Abril de 2012. E eu não precisei de tabela nenhuma pra isso.

Saiba mais aqui: http://blog.redfin.com/devblog/2008/05/fun_with_generate_series.html


Retornando CPF ou CNPJ com pontuação com o PostgreSQL

Os CPFs e CNPJs em seu sistema estão cadastrados todos sem pontos, como é bastante comum. Mas agora você precisa trazê-los do banco já com a pontuação correta. Como fazer isso?

Utilizando a função SUBSTR do PostgreSQL, podemos separar um String (Varchar, por exemplo) em várias partes e depois concatenar com a pontuação desejada. Lembre-se que o campo deve estar como String. Se estiver como inteiro, você vai ter que converter utilizando o CAST. Vamos aos exemplos:

CPF

select substr(cpf, 1, 3) || '.' ||
       substr(cpf, 4, 3) || '.' ||
       substr(cpf, 7, 3) || '-' ||
       substr(cpf, 10) as cpf
       from (select cast('93746041597' as varchar) as cpf)a

CNPJ

select  substr(cnpj, 1, 2) || '.' || SUBSTR(cnpj, 3, 3) || '.' ||
        substr(cnpj, 6, 3) || '/' || SUBSTR(cnpj, 9, 4) || '-' ||
        substr(cnpj, 13) AS cnpj
        from (select cast('99325358000151' as varchar) as cnpj)a


Fonte: http://flaviosilveira.com/2009/tratando-cpf-cnpj-primeiro-nome-e-data-pelo-sql-postgre/


Adicionar zeros à esquerda em um código no PostgreSQL com a função LPAD

Você tem uma tabela nos PostgreSQL quem tem vários códigos, sendo alguns com dois caracteres, outros com três, e por aí vai. Mas como fazer para uniformizar a quantidade de caracteres, ou seja, deixar todos os códigos com a mesma quantidade de números, adicionando zeros à esquerda? Basta utilizar a função LPAD do PostgreSQL. Vamos ao exemplo:

select 
   lpad(cast(cod_curso as varchar),4,'0') as cod_curso 
   from cursos

No exemplo acima, o código do curso que possui 3 caracteres, por exemplo: 125, virou 0125. O código do curso com 2 caracteres, por exemplo: 15, virou 0015. E por aí vai.

Você pode fazer os testes utilizando o banco de testes.

Saiba mais sobre o LPAD aqui e aqui.


Perdi a senha do PostgreSQL no Ubuntu! E agora!?

Há alguns meses atrás fiz um artigo explicando como recuperar a senha do MySQL no Ubuntu. Dessa vez vou fazer o mesmo no PostgreSQL. É tão simples quanto.

Abra o Terminal (Menu Principal / Acessórios / Terminal) e digite:

sudo -u postgres psql template1
alter user postgres with password 'NOVA_SENHA'
\q (para sair)

O procedimento foi testado no Ubuntu 10.04 LTS.

Fonte: http://forum.wmonline.com.br/topic/201179-instalei-postgre-no-ubuntu-mas-ele-nao-me-deu-a-senha/


Problemas ao exportar ou importar dados com o phpMyAdmin e o banco de dados MySQL

Se você está tentando exportar ou importar um arquivo grande, utilizando o phpMyAdmin e o banco de dados MySQL, e não está conseguindo, eu posso ter a solução.

Algumas vezes provedores bloqueam a exportação e importação de arquivos grandes com o phpMyAdmin e o MySQL. Muitas vezes nem precisa ser tão grande assim… Basta alguns megabytes e você já começa a ter problemas. Você simplesmente não consegue exportar ou importar dados.

Para resolver isso, uma solução é acessar diretamente a linha de comando e fazer o procedimento por lá. Uma tarefa que estava levando vários minutos para ser concluída, pode ser rapidamente executada em poucos segundos. Se você não tem acesso físico ao servidor, terá que verificar com seu provedor se é o SSH é liberado pra você, e só assim será possível fazer esse procedimento.

O procedimento foi testado no Ubuntu 10.04 LTS, mas deverá funcionar em qualquer distribuição Linux (e talvez até no Windows). Acesse o terminal (No Ubuntu, clique em Aplicativos / Acessórios / Terminal) e digite o seguinte:

Para importar dados

mysql -u usuario -p banco_de_dados < arquivo.sql

Substitua o que está em vermelho pelas informações corretas, correspondentes ao seu sistema. Será solicitada a senha em seguida. Se você está usando em sua máquina, onde você instalou o MySQL, possivelmente o usuário é root e a senha em branco.

Para exportar dados

mysqldump -u usuario -p banco_de_dados > arquivo.sql

Substitua o que está em vermelho pelas informações corretas, correspondentes ao seu sistema. Será solicitada a senha em seguida.

É isso! Espero que tenha ajudado.


  • Publicidade

  • Redes Sociais

    Facebook  Twitter
  • Estatísticas

    Page Views (desde março de 2010):

    Estatísticas detalhadas
  • Novidades por e-mail!

    Digite seu e-mail:


    Fique tranquilo. Seu e-mail não será usado para outros fins, e você poderá se descadastrar quando quizer.

    Eu!

    Tiago Passos
    Todo o conteúdo desse site esta licenciado sob a licença Creative Commons 3.0 (CC BY 3.0). Você pode copiar e modificar o conteúdo desde que cite o autor.
    iDream theme by Templates Next | Powered by WordPress