Skip to content

Biblioteca criada em C, com o objetivo de fazer o processamento e filtragem de CSVs.

License

Notifications You must be signed in to change notification settings

brenonsc/LibCSV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LibCSV 📚

Language License Docker

LibCSV é uma biblioteca em C para processamento de arquivos CSV, permitindo a aplicação de filtros e a seleção de colunas conforme especificado. A biblioteca é projetada para ser utilizada como uma biblioteca compartilhada (.so) em aplicações C.

Objetivo ✅

Implementar uma que faça a seleção de colunas e aplicação de filtros de forma eficiente. A biblioteca oferece funções para processamento de dados CSV diretamente de strings ou arquivos, produzindo saídas filtradas e formatadas conforme especificações fornecidas pelo usuário. Ideal para aplicações que necessitam de manipulação dinâmica e precisa de grandes volumes de dados CSV, LibCSV suporta filtros de comparação (>, <, =, !=, >= e <=) e garante a integridade e a ordem das colunas e filtros, atendendo a requisitos de desempenho e compatibilidade com a arquitetura x86_64.

Testando a aplicação 👨‍🔬

Para configurar a aplicação para executar em ambiente local, é necessário ter instalado o Docker, e assim seguir o passo a passo abaixo:

1. Clone o Projeto

git clone https://github.com/brenonsc/LibCSV.git
cd LibCSV

2. Construa a imagem no Docker

docker build -t libcsv .

Observação: Caso o sistema em uso seja de uma arquitetura diferente de x86_64, é necessário adicionar a flag --platform=linux/arm64.

3. Rode o contêiner

docker run -d libcsv

Funções da biblioteca e seus respectivos atributos 📌

processCsv

  • csv: String com os dados do CSV, onde cada linha representa um registro e as colunas são separadas por vírgulas.
    • Exemplo: "header1,header2,header3\n1,2,3\n4,5,6"
  • selectedColumns: Uma string onde os nomes das colunas a serem selecionadas são separados por vírgulas.
    • Exemplo: "header1,header3"
  • rowFilterDefinitions: Uma string onde cada filtro é definido em uma nova linha, no formato header(comparador)valor.
    • Exemplo: "header1>1\nheader2=2\nheader3<6"

processCsvFile

  • csvFilePath: String com o caminho do arquivo CSV.
    • Exemplo: "path/to/csv_file.csv"
  • selectedColumns: Uma string onde os nomes das colunas a serem selecionadas são separados por vírgulas.
    • Exemplo: "header1,header3"
  • rowFilterDefinitions: Uma string onde cada filtro é definido em uma nova linha, no formato header(comparador)valor.
    • Exemplo: "header1>1\nheader2=2\nheader3<6"

Exemplo:

const char csv[] = "header1,header2,header3\n1,2,3\n4,5,6\n7,8,9";
processCsv(csv, "header1,header3", "header1>1\nheader3<8");

// output
// header1,header3
// 4,6

const char csv_file[] = "path/to/csv_file.csv";
processCsvFile(csv_file, "header1,header3", "header1>1\nheader3<8");

// output
// header1,header3
// 4,6

Testes Unitários 🧪

A aplicação contempla testes unitários utilizando-se de CUnit, e está presente dentro da pasta test. Caso queira, os mesmos podem ser acessados da seguinte forma (após a clonagem do repositório):

1. Acesse o diretório

cd test

2. Rode o comando make

make

3. Rode os testes

./test_libcsv

Licença

Este software está licenciado sob a Licença MIT.

About

Biblioteca criada em C, com o objetivo de fazer o processamento e filtragem de CSVs.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published