Eu tenho um arquivo CSV com alguns dados de transação. Vamos dizer data, volume, preço e direção (vender / comprar). Além disso, há um ID para cada transação e, em cada transação de fechamento (a mais recente), há uma referência à transação correspondente. Referência de banco de dados clássico.
Agora quero fazer algumas estatísticas e desenhar alguns gráficos. Isso pode ser feito via Octave, LaTeX / TikZ, Gnuplot ou qualquer outra coisa. Para fazer isso eu preciso comprar e vender o preço em uma linha. Meu pensamento foi pré-processar o CSV para obter outro CSV contendo as informações necessárias e, em seguida, fazer as estatísticas.
No final, gostaria de ter uma solução baseada em scripts e não em uma planilha eletrônica, pois os dados podem ser alterados com frequência (exportados do banco de dados on-line).
Minha solução atual (veja link ) é um script bash que analisa o CSV linha por linha e verifica se existe um transação correspondente. Se encontrado, uma nova linha é gravada no CSV de destino. Se não é impresso um aviso.
A má notícia: para cada linha no arquivo de origem, eu tenho que ler o arquivo inteiro algumas vezes. Isso causa longos tempos de execução de 10 segundos para 300 linhas. Como o número da linha pode subir em breve (> 10k linhas), isso não é perfeito.
Estou ciente de que há muitos shells a serem abertos no script que podem causar problemas de desempenho.
Agora, minhas perguntas:
- O bash / awk / sed / .... é uma boa maneira de fazer as coisas?
- Devo importar primeiro todos os dados para um banco de dados local "real" para usar o SQL?
- Existe uma maneira fácil de alcançar os resultados desejados?