Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

csv-cli-tool

Herramienta de línea de comandos (CLI) para leer, filtrar, ordenar y exportar archivos CSV, desarrollada en Java.

Demo

# Importar y mostrar todo el contenido
java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar import -i datos.csv

# Filtrar por columna
java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar import -i datos.csv -f ciudad -v Madrid

# Ordenar por columna
java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar import -i datos.csv -s nombre

# Exportar resultado a otro CSV
java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar export -i datos.csv -o resultado.csv -f ciudad -v Madrid

Funcionalidades

  • Leer y mostrar el contenido de un archivo CSV por consola
  • Filtrar filas por el valor de una columna (sin distinguir mayúsculas)
  • Ordenar filas alfabéticamente por una columna
  • Exportar el resultado procesado a un nuevo archivo CSV
  • Mensajes de error, advertencia y éxito con colores ANSI
  • Soporte de campos entrecomillados, BOM UTF-8 y saltos de línea dentro de campos

Arquitectura

src/
└── main/java/com/pier0del/csvcli/
    ├── Main.java                          # Punto de entrada
    ├── cli/
    │   ├── AppCommands.java               # Comando raíz (csvtool)
    │   ├── ImportCommand.java             # Subcomando import
    │   ├── ExportCommand.java             # Subcomando export
    │   └── ConsolePrinter.java            # Salida por consola con colores
    ├── io/
    │   ├── CsvReader.java                 # Lector CSV con soporte de comillas
    │   ├── CsvWriter.java                 # Escritor CSV
    │   └── FileValidator.java             # Validación de rutas y extensiones
    ├── model/
    │   ├── CsvRow.java                    # Fila del CSV como mapa columna→valor
    │   └── ProcessingResult.java          # Resultado inmutable de cada operación
    ├── service/
    │   ├── CsvTransformationService.java  # Filtrado y ordenación
    │   └── DataConverter.java             # Conversión y normalización de valores
    └── exception/
        ├── CsvException.java              # Excepción base
        ├── ColumnNotFoundException.java   # Columna no encontrada
        └── InvalidFormatException.java    # CSV mal formado

Tecnologías

  • Java 17
  • Maven
  • picocli 4.7.5 — framework para CLIs en Java
  • JUnit 5 — testing

Requisitos

  • Java 17 o superior
  • Maven 3.6 o superior

Instalación y ejecución

# 1. Clona el repositorio
git clone https://github.com/pier0del/csv-cli-tool.git
cd csv-cli-tool

# 2. Compila y genera el JAR
mvn package

# 3. Ejecuta
java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar --help

Uso

Subcomando import

Lee y muestra el contenido de un CSV por consola.

java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar import [opciones]

Opciones:
  -i, --input    Ruta del archivo CSV de entrada  (obligatorio)
  -f, --filter   Columna por la que filtrar
  -v, --value    Valor exacto que debe tener la columna
  -s, --sort     Columna por la que ordenar alfabéticamente
  -h, --help     Mostrar ayuda

Subcomando export

Lee un CSV, aplica filtros y ordenación, y guarda el resultado en otro archivo.

java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar export [opciones]

Opciones:
  -i, --input    Ruta del archivo CSV de origen   (obligatorio)
  -o, --output   Ruta del archivo CSV de destino  (obligatorio)
  -f, --filter   Columna por la que filtrar
  -v, --value    Valor exacto que debe tener la columna
  -s, --sort     Columna por la que ordenar
  -h, --help     Mostrar ayuda

Ejemplo de CSV

nombre,ciudad,edad
Ana,Madrid,25
Juan,Barcelona,30
Maria,Madrid,22
Carlos,Valencia,28
# Filtrar personas de Madrid y ordenar por nombre
java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar import -i datos.csv -f ciudad -v Madrid -s nombre

# Exportar resultado
java -jar target/csv-cli-tool-1.0-SNAPSHOT.jar export -i datos.csv -o madrid.csv -f ciudad -v Madrid -s nombre

Licencia

MIT License — ver fichero LICENSE

About

No description or website provided.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages