Giter VIP home page Giter VIP logo

divisor-csv's Introduction

Divisor CSV

Este projeto é um simples divisor CSV - Comma Separated Values, Valores Separados por Vírgula, tipo de arquivo simples que pode ser aberto como planilha.

Ele pode ser usado para diversas finalidades. A finalidade principal é subdividir os arquivos CSV para que possam ser organizados para outras tarefas de preenchimento e importação nos diversos bancos de dados existentes.

O Divisor tem 2 métodos de divisão: por linhas ou partes:

  • Divisão por linhas: o divisor irá pegar o arquivo .csv e ira dividir por linhas. Exemplo: arquivo .csv de 10k de linhas -> divisão com numero de linhas: 1k -> divisão em 10 arquivos com 1k de linhas cada.

  • Divisão por partes: o divisor irá pegar o arquivo .csv e irá subdividir pelo número de partes especificadas. Exemplo: arquivo .csv de 10k -> divisão em 2 partes -> divisão em 2 arquivos cada um com 5k de linhas.

* Os valores de cada divisão, seja número de linhas ou partes, podem ser especificados no arquivo .env.

Requerimentos

  • Docker Engine: versão 20.10.18 ou mais recente.
  • Docker Compose: versão 2.10.2 ou mais recente.

Scripts

Os scripts estão na pasta scripts/ e pode ser rodados a partir da pasta do projeto dando primeiro a permissão via chmod +x ./scripts/*.sh. Após dada a devida permissão, rode-os usando a sintaxe ./scripts/[nome_script].sh.

Entrada e Saída

Entrada

Coloque os seus arquivos .csv na pasta in/, em forma de árvores de diretórios ou de arquivos simples, basta colocar os arquivos .csv na pasta. Este divisor tem suporte à divisão de múltiplos arquivos de forma simultânea.

Saída

Após rodar o divisor, será gerado várias subdivisões do arquivo na pasta splits-[unix_timestamp]

Como rodar o Divisor CSV

  1. Copie o arquivo .env.sample e renomeie-o para .env e edite ele conforme preferir. Caso contrário, o script seguinte gerará um automaticamente com as configurações padrão existentes no .env.sample. Após a geração do .env, o divisor poderá ser personalizado conforme a necessidade do uso.

  2. Após dada a permissão adequada aos scripts, rode o seguinte script:

$ ./scripts/up.sh

Há também um script extra para apagar o container se ocorrer um problema de execução no passo 2:

$ ./scripts/down.sh

Este script irá rodar o docker compose downe apagar todas as configurações do compose seguidas no docker-compose.yml.

Depuração via VS Code:

Há presentes nesse repositório a configuração necessária para realizar a depuração do script caso necessário.

Para realizar a depuração do script main.py dentro do container Docker, descomente a linha que está presente no arquivo Dockerfile:

#CMD python -m debugpy --listen 0.0.0.0:5678 --wait-for-client main.py

E comente a linha principal:

CMD python main.py

Após realizar as alterações no Dockerfile, rode o script como documentado na seção Como rodar o Divisor CSV logo acima.

O script só irá rodar depois que o cliente de depuração do VS Code for inicializado corretamente. Veja este vídeo de exemplo no YouTube demostrando seu uso:

https://www.youtube.com/watch?v=ywfsLKRLmf4

Outros scripts importantes

  • scripts/clear.sh - limpa a pasta out/ com os arquivos subdivididos.

  • scripts/gen-csv-sample.sh - gera um arquivo sample.csv com 3M de linhas na pasta /in, recurso utilizado para testar a carga do divisor na hora de carregar o arquivo para a memória.

Licença

GPL v3

divisor-csv's People

Contributors

lucasplus10 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.