Consultando um arquivo CSV

28

Alguém sabe de uma ferramenta simples que abrirá um arquivo CSV e permitirá fazer consultas básicas em SQL? Como uma ferramenta gráfica do tipo, fácil de usar.

Eu sei que eu poderia escrever um pequeno script para fazer uma importação do CSV para um banco de dados SQLite, mas como imagino que alguém tenha pensado nisso antes de mim, eu só queria saber se ele existia. O que me levou a essa pergunta é que estou ficando frustrado com os limitados recursos de filtragem do Excel.

Talvez alguma outra ferramenta de manipulação de visualização de dados forneça funcionalidade semelhante.

Grátis ou OSS é o preferido, mas estou aberto a sugestões.

EDITAR:

Eu realmente prefiro alguns tutoriais claros sobre como fazer o seguinte, em vez de apenas "tornar sua planilha uma entrada ODBC" ou "escrever programas usando arquivos ODBC", ou mais ideias sobre aplicativos a serem usados. Nota: não consigo usar o MS Access.

Ainda outro EDIT:

Ainda estou aberto para soluções usando o SQLite. Minha plataforma é um laptop Win2k semi-antigo, com um P4 nele. É muito lento, portanto, uma solução com recursos leves é ideal e provavelmente obterá a vitória.

    
por J. Polfer 17.07.2009 / 16:58

16 respostas

12

Você já tentou LogParser ?

Log parser is a powerful, versatile tool that provides universal query access to text-based data such as log files, XML files and CSV files, as well as key data sources on the Windows® operating system such as the Event Log, the Registry, the file system, and Active Directory®. You tell Log Parser what information you need and how you want it processed. The results of your query can be custom-formatted in text based output, or they can be persisted to more specialty targets like SQL, SYSLOG, or a chart.

Most software is designed to accomplish a limited number of specific tasks. Log Parser is different... the number of ways it can be used is limited only by the needs and imagination of the user. The world is your database with Log Parser.

Um tutorial (e um outro ) sobre o uso da linguagem de consulta SQL com arquivos CSV I encontrada usando o google .

Exemplo de consulta:

logparser -i:CSV "SELECT TOP 10 Time, Count INTO c:\logparser\test\Chart.GIF 
FROM c:\logparser\test\log.csv ORDER by Time DESC" -charttype:bar3d
    
por 22.07.2009 / 11:41
33

Eu acredito que o Banco de Dados do OpenOffice.org pode fazer o que você quiser. Funciona assim.

  1. Inicie o Open Office.org Database, ele mostra o " Database Wizard "

  2. Selecione " Conectar-se a um banco de dados existente: Texto "

  3. Especifiqueocaminhoparaosarquivosdetexto,bemcomodetalhescomoocaractereseparadoretc.

  4. Crie e execute consultas

Se você já trabalhou com o Microsoft Access, encontrará a GUI familiar.

Se você pode fazer sem uma GUI, sempre há os comandos tradicionais do UNIX. Eu os uso muito para fazer consultas simples em arquivos CSV (pequenos). Veja como funciona:

clause      operation   command
-------------------------------
from             join     'join'
where     restriction     'grep'
order by           --     'sort'
group by  restriction      'awk'
having    restriction     'grep'
select     projection      'cut'
distinct  restriction     'uniq'
limit     restriction     'head'
offset    restriction     'tail'
    
por 19.07.2009 / 23:16
13

Você pode usar o ODBC para consultar arquivos de texto:

Acessando arquivos de texto usando o provedor de dados ODBC

Note que você não precisa do MS Access para funcionar, o tutorial no link acima apenas usa o MS Access para criar o arquivo de texto, mas como você já tem um arquivo de texto, role até a metade e inicie o tutorial onde você vê o título Acessando um arquivo de texto .

Atualizar : criei um DSN em um arquivo .csv para poder criar este tutorial passo a passo ... aqui está:

  • Verifique se o arquivo .csv está em seu próprio diretório sem mais nada.
  • Abra o "Administrador de fonte de dados ODBC" (iniciar - painel de controle - ferramentas administrativas - Fontes de dados (ODBC)).
  • Vá até a guia DSN do arquivo e clique em "Adicionar ...".
  • Escolha "Microsoft Text Driver (* .txt, * .csv) na lista e clique em" Next > ".
  • Dê um nome para a fonte de dados do seu arquivo (por exemplo, "teste") e clique em "Próximo >".
  • Clique em "Concluir" (depois disso, uma caixa de diálogo aparecerá onde os campos "Nome da fonte de dados" e "Descrição" estão realmente esmaecidos. Isso é normal. Não se preocupe.
  • Desmarque a caixa de seleção "Usar o diretório atual". O botão "Selecionar Diretório" será ativado.
  • Clique no botão "Selecionar diretório" e faça a nagivação para a pasta na qual você colocou o arquivo .csv na primeira etapa.
  • Clique no link "Opções > >" botão.
  • Clique no botão "Definir formato ...".
  • Na lista "Tabelas" à esquerda, selecione seu arquivo .csv e clique no botão "Adivinhar". (Isso analisará seu arquivo csv e criará um campo apropriado para cada coluna no seu arquivo .csv.)
  • Percorra as colunas geradas (F1, F2, ...) na lista à direita, atribua-lhes nomes significativos e defina o tipo de dados apropriado (às vezes, a suposição nem sempre está correta).
  • Quando tudo estiver configurado corretamente, clique em "OK" (2 vezes).

Neste ponto, você deve ter um DSN de arquivo com o qual você possa acessar seu arquivo .csv por meio do ODBC. Se você inspecionar sua pasta onde o arquivo .csv é colocado, você verá um arquivo schema.ini, que contém a configuração que você acabou de criar. Quando você tem vários arquivos .csv, cada um corresponde a uma tabela e cada tabela terá um bloco [<> nome_do_arquivo .csv] no arquivo schema.ini no qual as diferentes colunas são definidas ... Você também pode criar / alterar esse arquivo schema.ini diretamente em um editor de texto em vez de usar a GUI descrita acima.

Quanto à sua pergunta extra "como se conectar a esse provedor ODBC usando uma ferramenta de consulta":
Eu tenho uma ferramenta que eu mesmo escrevi há muito tempo que não é elegível para publicação. Mas uma rápida pesquisa no Google surgiu com odbc-view , uma ferramenta freeware que faz o que você quer. < br> Eu baixei e instalei a ferramenta.
Depois de iniciar a ferramenta:

  • Clique em "DataSource ...".
  • Selecione sua fonte de dados de arquivo que você criou anteriormente (por exemplo, "teste").
  • No painel de consulta, digite "selecione * de [ nome do arquivo .csv]".
  • Clique em "Executar".

Você deve ver o conteúdo do seu arquivo .csv no painel inferior agora.
Espero que isso ajude ... Deixe-me saber como você faz ou se você precisar de mais ajuda.

    
por 17.07.2009 / 17:11
8

Eu gosto de usar R para acessar arquivos csv de maneira rápida. Enquanto a linguagem não é diretamente SQL você pode fazer todas essas coisas com comandos simples em R. O R também oferece a capacidade de criar gráficos agradáveis e muito mais poder.

    
por 20.07.2009 / 00:16
5

Você sempre pode ler o arquivo no Excel e usar o Excel como sua fonte de dados via ODBC e executar consultas em relação a ele.

    
por 17.07.2009 / 17:01
3

Eu encontrei um aplicativo pequeno e não gráfico que faz isso: csvsql .

A documentação é aqui .

    
por 20.07.2009 / 17:30
2

Uma ferramenta que eu acho que pode facilitar isso no futuro é Resolver One .

É uma planilha que gera código Python que é facilmente modificável. Para aqueles que são desenvolvedores e, ocasionalmente, precisam "descer" para resolver problemas em planilhas, isso parece ser uma maneira intuitiva de resolver problemas de planilhas em um idioma com o qual eles estão familiarizados.

E isso me dá uma desculpa para usar o Python. Python me faz feliz.

    
por 18.08.2009 / 17:17
2

O driver H2 JDBC fornece uma função csvread muito útil, permitindo que você faça coisas como as seguintes:

select * from csvread(test1.csv) test1 
inner join csvread(test2.csv2) test2
on test1.id = test2.foreignkey

Existem várias maneiras de usar esse driver sem precisar digitar código para usá-lo.

Pessoalmente, eu prefiro o Squirrel SQL Client que oferece uma boa GUI para a execução de consultas. Para usar tudo isso, O que você precisa fazer é apontar o caminho de classe do driver H2 In-Memory listado para o driver H2 que você baixou. Depois de configurar um alias adequado usando o driver, você pode executar qualquer SQL aleatório desejado. Os resultados são exibidos em uma boa tabela e todos os outros recursos para importação, exportação, etc.

Como alternativa, você pode usar o Groovy para escrever um script rápido para carregar e usar o driver conforme necessário. Veja este exemplo de blog para descubra como.

Parece que alguém estendeu o script groovy acima e transformou-o em uma ferramenta de linha de comando interessante para executar as consultas, consulte gcsvsql. Com isso, você pode executar comandos como os seguintes:

gcsvsql "select * from people.csv where age > 40"
    
por 28.06.2011 / 14:41
2

Você pode dar uma olhada na ferramenta gratuita q - Texto como banco de dados , que permite executar o SQL diretamente em arquivos csv, incluindo junções, agrupamentos e qualquer outra construção SQL. Também inclui detecção automática de nomes de colunas e tipos de colunas.

É uma ferramenta de linha de comando que corresponde ao modo de operação do Linux (por exemplo, Piping de stdin, se necessário, sinalizadores especiais para personalizar o comportamento, etc.).

Usa o sqlite nos bastidores, muito leve e fácil de usar.

Divulgação completa - é minha própria ferramenta de código aberto. Espero que você ache útil

Harel Ben-Attia

    
por 15.03.2014 / 13:28
2

Descobri que a maneira mais simples de conseguir isso é simplesmente usar a funcionalidade de importação de CSV do SQLite:

  1. sqlite3 mydatabase.sqlite
  2. sqlite> .mode csv
  3. sqlite> .import mydata.csv <tablename>

Agora você tem um banco de dados em funcionamento que pode ser consultado da maneira que preferir. Eu também achei o desempenho do acima para ser bom, eu apenas importei três milhões de linhas em 10-15 segundos.

    
por 19.03.2015 / 09:54
2

Eu escrevi um programa de linha de comando para executar SQL arbitrário em arquivos csv, incluindo junções com vários arquivos, chamado gcsvsql. Você pode ler sobre isso aqui:

link

Existe um projeto do Google Code para ele aqui: link

Ele está escrito em Java / Groovy e será executado em qualquer lugar em que o Java esteja disponível.

Editar: projeto ativo movido para o github. link

    
por 16.09.2011 / 08:08
1

Você pode querer tentar a ferramenta Q . É muito leve, requer apenas o Python 2.5 ou mais recente.

    
por 02.06.2014 / 00:37
1

Mais duas opções para esta tarefa: querycsv e fsql . Querycsv é Python e usa o sqlite3. Fsql é Perl e usa DBD :: CSV .

    
por 26.06.2014 / 03:18
0

Embora não seja gratuito, o melhor programa que encontrei para isso é Consulta de arquivos . Ao contrário das outras soluções que são baseadas em linha de comando, ou exigem a importação / configuração do arquivo antes de acessá-lo, o File Query permite abrir um arquivo (mesmo GBs inup como um editor de texto normal, e automaticamente analisar o layout para você, e deixar você fazer quase todas as suas consultas a partir de diálogos simples.

É um pouco caro, mas se você precisar fazer algo apenas uma vez, poderá usar a avaliação gratuita por 30 dias. Eles também têm ótimos guias e até vídeos para você começar.

    
por 12.04.2013 / 16:57
0

você pode usar o WHS. Por exemplo, eu tenho 4 arquivos no diretório 'C: \ Users \ user837 \ Desktop \ t4': 1.txt

id;sex_ref;sale
1;1;10
2;2;30
3;1;20

2.txt

sex_id;name
1;male
2;female

schema.ini

[1.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=50
DecimalSymbol=,
[2.txt]
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=50
DecimalSymbol=,

e Hello.js

WScript.Echo("Hello World!");
var cn = new ActiveXObject("ADODB.Connection");
cn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"C:\Users\user837\Desktop\t4\";Extended Properties=\"text;HDR=NO;FMT=Delimited\"");

var rs = cn.Execute("select * from 1.txt as t1 left join 2.txt as t2 on t1.sex_ref = t2.sex_id");

while (!rs.EOF) 
{
    WScript.Echo(           rs.Fields("id").Value
                  + "###" + rs.Fields("sex_ref").Value
                  + "###" + rs.Fields("name").Value
                );
    rs.moveNext();
}

Agora, basta clicar duas vezes em Hello.js e você verá sql reqult linha por linha. Veja a documentação do WHS para ver todos os resultados da consulta.

    
por 01.08.2014 / 12:09
0

Existe um plugin Notepad ++ CsvQuery para executar consultas sql em arquivos csv abertos no npp. link

    
por 31.05.2018 / 10:32

Tags