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.
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.
Para configurar a aplicação para executar em ambiente local, é necessário ter instalado o Docker, e assim seguir o passo a passo abaixo:
git clone https://github.com/brenonsc/LibCSV.git
cd LibCSV
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
.
docker run -d libcsv
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"
- Exemplo:
- selectedColumns: Uma string onde os nomes das colunas a serem selecionadas são separados por vírgulas.
- Exemplo:
"header1,header3"
- Exemplo:
- rowFilterDefinitions: Uma string onde cada filtro é definido em uma nova linha, no formato
header(comparador)valor
.- Exemplo:
"header1>1\nheader2=2\nheader3<6"
- Exemplo:
processCsvFile
- csvFilePath: String com o caminho do arquivo CSV.
- Exemplo:
"path/to/csv_file.csv"
- Exemplo:
- selectedColumns: Uma string onde os nomes das colunas a serem selecionadas são separados por vírgulas.
- Exemplo:
"header1,header3"
- Exemplo:
- rowFilterDefinitions: Uma string onde cada filtro é definido em uma nova linha, no formato
header(comparador)valor
.- Exemplo:
"header1>1\nheader2=2\nheader3<6"
- Exemplo:
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
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):
cd test
make
./test_libcsv
Este software está licenciado sob a Licença MIT.