De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Transformando arquivos csv em SQL

Colaboração: Cesar Brod

Data de Publicação: 22 de março de 2013

Ao ler a dica Usando o SQL para buscas em arquivos de texto, o amigo Pedro Markun sugeriu que eu conhecesse o csvkit. Valeu muito a pena!

Direto ao ponto! Para instalar o csvkit, você precisará do pip (utilitário para a instalação de programas em Python):

  sudo apt-get install python-pip

A seguir, instale o csvkit:

  sudo pip install csvkit

Agora, recrie o exemplo da dica Usando o SQL para buscas em arquivos de texto, replicado aqui para facilitar a sua vida:

Crie um arquivo texto chamado "exemplo.csv" com o conteúdo similar ao que está abaixo:

  nome,idade,sexo
  Cesar,49,M
  Meire,48,F
  Aline,24,F
  Ana Luiza,20,F
  Natalia,26,F

Feito isto, execute o comando a seguir e observe o seu resultado:

  # csvsql -i postgresql  exemplo.csv
  CREATE TABLE exemplo (
         nome VARCHAR(9) NOT NULL,
         idade INTEGER NOT NULL,
         sexo VARCHAR(1) NOT NULL
  );

Bacana, né? Mas até agora nada muito útil. A chave -i indica qual a base de dados para a qual será usada a sintaxe para a criação da tabela. Os gerenciadores de bases de dados suportados pelo csvkit são access, sybase, sqlite, informix, firebird, mysql, oracle, maxdb, postgresql e mssql.

As coisas começam a ficar mais interessantes com comandos como este aqui:

  csvsql --db sqlite:///teste --insert exemplo.csv

Ele é relativamente intuitivo. Agora será criada uma base de dados sqlite, chamada teste, contendo uma tabela chamada exemplo cujos dados virão do arquivo exemplo.csv. Claro, para que isto funcione, você deve ter o sqlite instalado. Mas isto você já sabe como fazer, certo?

  sudo apt-get install sqlite3

Teste para ver se funcionou:

  # sqlite3 teste
  SQLite version 3.7.9 2011-11-01 00:52:41
  Enter ".help" for instructions
  Enter SQL statements terminated with a ";"
  
  sqlite> select * from exemplo;
  Cesar|49|M
  Meire|48|M
  Aline|24|F
  Ana Luiza|20|F
  Natalia|26|F
  
  sqlite> select nome,idade from exemplo;
  Cesar|49
  Meire|48
  Aline|24
  Ana Luiza|20
  Natalia|26
  
  sqlite> select nome,idade from exemplo where sexo="F";
  Aline|24
  Ana Luiza|20
  Natalia|26

Tecle, simultaneamente, CTRL+D para sair do sqlite3.

Como você já viu neste artigo, o sqlite é um dos gerenciadores de base de dados suportado. Olhando os exemplos na página do csvkit você verá que pode, de maneira similar, importar seus arquivos csv para todos os tipos de bases de dados suportados pelo csvkit. Pense, por exemplo, naquela velha planilha com a lista dos seus clientes e fornecedores... #ficaadica! ;-)

Se quiser brincar com alguns arquivos csv já prontos, o Portal de Dados Abertos tem uma infinidade deles. Mas você pode também fazer algumas buscas divertidas no Google. Experimente, por exemplo, colocar o que está aí, logo abaixo, na caixa de busca do Google e dê uma navegada pelos resultados:

  site:.br filetype:csv intext:nome intext:"@" intext:"e-mail" OR intext:mail

Lembrando que arquivos xls e ods podem ser, facilmente, convertidos para csv:

  site:.br filetype:csv OR filetype:xls OR filetype:ods intext:nome intext:"@" intext:"e-mail" OR intext:mail

Divirta-se e lembre-se: use a sua inteligência apenas para fazer o bem!

Visite a página do projeto csvkit.

Leia também:

Cesar Brod traduz livros e outros materiais, do inglês para o português (e vice-versa), e produz conteúdo especializado para empresas de tecnologia. Ele pode ser contatado através das redes sociais ou através do formulário no portal da BrodTec.

Cesar Brod ministra cursos in-house adequados à necessidade de sua empresa, além de atuar como coach de equipes ágeis. Visite nosso portal para saber mais ou entre em contato diretamente com o autor para mais informações.

Error: No site found with the domain 's2.dicas-l.com.br' (Learn more)