it-swarm-pt.tech

Consultando um arquivo CSV

Alguém conhece uma ferramenta simples que irá abrir um arquivo CSV e permitir que você faça consultas básicas SQLesque? Como uma ferramenta gráfica, fácil de usar.

Sei que poderia escrever um pequeno script para importar o CSV para um banco de dados SQLite, mas, como imagino que alguém pensou nisso antes de mim, só queria saber se existia. O que está causando essa pergunta é que estou ficando frustrado com os recursos limitados de filtragem do Excel.

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

A opção Free ou OSS é preferida, mas estou aberto a sugestões.

EDITAR:

Eu realmente preferiria alguns tutoriais claros sobre como fazer o abaixo, em vez de apenas "tornar sua planilha uma ODBC" ou "escrever programas usando ODBC" ou mais idéias sobre aplicativos a serem usados.Nota: Não consigo usar o MS Access.

Mais uma edição:

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

30
J. Polfer

Você já tentou LogParser ?

O analisador de logs é uma ferramenta versátil e poderosa que fornece acesso universal à consulta de dados baseados em texto, como arquivos de log, arquivos XML e arquivos CSV, além de fontes de dados importantes no sistema operacional Windows®, como o log de eventos, o registro, o sistema de arquivos e o Active Directory®. Você informa ao Analisador de Log quais informações você precisa e como deseja que elas sejam processadas. Os resultados da sua consulta podem ser formatados de forma personalizada na saída baseada em texto ou podem ser persistidos em destinos mais especializados, como SQL, SYSLOG ou um gráfico.

A maioria dos softwares é projetada para realizar um número limitado de tarefas específicas. O Analisador de Log é diferente ... o número de maneiras que ele pode ser usado é limitado apenas pelas necessidades e imaginação do usuário. O mundo é seu banco de dados com o Analisador de Log.

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

Consulta de exemplo:

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
13
svandragt

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

  1. Inicie o Open Office.org Database, ele mostra o " Assistente de Banco de Dados "

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

    enter image description here

  3. Especifique o caminho para os arquivos de texto, além de detalhes como o caractere separador etc.

    enter image description here

  4. Criar e executar consultas

    enter image description here

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


Se você pode ficar sem uma GUI, sempre existem os comandos tradicionais do UNIX. Eu os uso muito para fazer consultas simples em arquivos (pequenos) CSV. Aqui está 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`
34
Ludwig Weinzierl

Você pode usar ODBC para consultar arquivos de texto:

Acessando arquivos de texto usando ODBC Data Provider

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

Atualização : Eu mesmo 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 da fonte de dados ODBC" (painel de controle - ferramentas administrativas - fontes de dados (ODBC)).
  • Vá para a guia DSN do arquivo e clique em "Adicionar ...".
  • Escolha "Microsoft Text Driver (* .txt, * .csv) na lista e clique em" Avançar> ".
  • Dê um nome para a fonte de dados do arquivo (por exemplo, "teste") e clique em "Avançar>".
  • Clique em "Concluir" (depois disso, será exibida uma caixa de diálogo onde os campos "Nome da fonte de dados" e "Descrição" estão realmente acinzentados. Isso é normal. Não se preocupe.
  • Desmarque a caixa de seleção "Usar diretório atual". O botão "Selecionar diretório" será ativado.
  • Clique no botão "Selecionar diretório" e nagive para a pasta em que você colocou o arquivo .csv na primeira etapa.
  • Clique no botão "Opções >>".
  • Clique no botão "Definir formato ...".
  • Na lista "Tabelas" esquerda, selecione o 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 correta, atribua nomes significativos e defina o tipo de dados apropriado (às vezes a suposição nem sempre é correta).
  • Quando tudo estiver configurado corretamente, clique em "OK" (2 vezes).

Nesse ponto, você deve ter um arquivo DSN com o qual pode acessar o arquivo .csv por meio do ODBC. Se você inspecionar sua pasta onde o arquivo .csv está colocado, verá um arquivo schema.ini, que contém a configuração que você acabou de criar. Quando você possui vários arquivos .csv, cada um deles corresponde a uma tabela e cada tabela possui um bloco [ filename. 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 conectar-se a este provedor ODBC usando uma ferramenta de consulta":
Eu tenho uma ferramenta que 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ê deseja.
Eu baixei e instalei a ferramenta.
Após iniciar a ferramenta:

  • Clique em "DataSource ...".
  • Selecione a fonte de dados do 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ê está ou se precisa de mais assistência.

13
fretje

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. R também fornece a capacidade de criar gráficos agradáveis ​​e muito mais poder.

8
Christian

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

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

Agora você tem um banco de dados que pode ser consultado da maneira que desejar. Também achei bom o desempenho acima, acabei de importar três milhões de linhas em 10 a 15 segundos.

6
Markus Amalthea Magnuson

Você sempre pode ler o arquivo no Excel e usar o Excel como fonte de dados via ODBC e executar consultas nele.

5
m.floryan

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

A documentação é aqui .

4
Stefan Thyberg

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 e tipos de colunas.

É uma ferramenta de linha de comando que combina com o modo de operação do Linux (por exemplo, Piping from 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

3
Harel Ben Attia

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

2
agrrd

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

http://bayesianconspiracy.blogspot.com/2010/03/gcsvsql.html

Há um projeto do Google Code aqui: http://code.google.com/p/gcsvsql/

Está escrito em Java/Groovy e será executado em qualquer lugar Java está disponível.

Edit: Projeto ativo movido para o github. https://github.com/jdurbin/durbinlib

2
James Durbin

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

É uma planilha que gera Python que é facilmente modificável. Para aqueles que são desenvolvedores e, ocasionalmente, precisam "renunciar" para resolver problemas em planilhas, isso parece uma maneira intuitiva de resolver planilhas) problemas estranhos em um idioma que eles estão familiarizados.

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

2
J. Polfer

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 ter que se aprofundar na gravação de código para usá-lo.

Pessoalmente, prefiro o Squirrel SQL Client , que fornece uma interface gráfica agradável para a execução de consultas. Para usá-lo, basta apontar o já listado H2 In-Memory Caminho da classe do driver para o driver H2 que você baixou. Depois de configurar um alias adequado usando o driver, você pode executar o SQL aleatório que desejar. Os resultados são exibidos em uma tabela Agradável e todos os tipos de 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 neste exemplo blogpost para descobrir como.

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

gcsvsql "select * from people.csv where age > 40"
2
lstg

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

1
Nelson

você pode usar o WHS. Por exemplo, 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á a solicitação de sql linha por linha. Consulte a documentação do WHS para visualizar todos os resultados da consulta.

0
Oleg

Há um plugin CsvQuery do Notepad ++ para executar consultas sql em arquivos csv abertos no npp. https://github.com/jokedst/CsvQuery

0
Greck

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

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

0
Jeffrey Harmon