Controlador CSV
Esta documentación explica la implementación del controlador CSV y cómo los parámetros de conexión se corresponden con los campos de la interfaz de usuario en la aplicación Gigantic.
Parámetros de Conexión
| Campo UI | Implementación Técnica | Descripción | Requerido | Valor por Defecto |
|---|---|---|---|---|
| Ruta del Directorio | dir en la configuración csv | La ruta del directorio donde se almacenan los archivos CSV | Sí | Directorio de trabajo actual |
| Extensión del Archivo | extension en la configuración csv | La extensión del archivo para archivos CSV | No | csv |
| Encabezados | headers en la configuración csv | Si los archivos CSV tienen encabezados | No | true |
| Delimitador | delimiter en la configuración csv | Carácter usado para separar campos en archivos CSV | No | , (coma) |
| Entrecomillado | quoted en la configuración csv | Si los campos están encerrados entre comillas | No | true |
| Carácter de Comillas | quote en la configuración csv | Carácter usado para entrecomillar campos | No | " (comilla doble) |
Detalles Técnicos
La implementación del controlador CSV utiliza operaciones del sistema de archivos integradas en Node.js con la biblioteca fast-csv para parseo.
Aspectos técnicos clave:
- Trata cada archivo CSV en un directorio como una colección/tabla separada
- Utiliza streams para lectura y escritura eficiente de archivos CSV grandes
- Crea automáticamente el directorio si no existe
- Convierte filas CSV a objetos JSON usando nombres de encabezado como claves
- Maneja serialización de objetos convirtiéndolos a cadenas JSON
- No se requiere autenticación para archivos CSV (acceso al sistema de archivos)
Proceso de conexión:
- El controlador toma una ruta de directorio como entrada
- Escanea el directorio en busca de archivos con la extensión especificada
- Cada archivo se convierte en una colección desde la que se puede leer o a la que se puede escribir
Proceso de lectura:
- Crea un stream legible desde el archivo CSV
- Utiliza el parser fast-csv para convertir datos CSV a arrays
- Transforma arrays a objetos JSON usando encabezados como claves
Proceso de escritura:
- Crea un stream escribible a un archivo CSV
- Utiliza el escritor fast-csv para convertir objetos JSON de vuelta al formato CSV
- Maneja el entrecomillado y escape apropiado de campos
Opciones de Autenticación
| Tipo de Autenticación | Mapeo UI | Descripción |
|---|---|---|
| Ninguna | Única opción disponible | No se necesita autenticación para archivos CSV |
Nota: El controlador CSV no requiere autenticación ya que trabaja directamente con archivos en el sistema de archivos.
Endpoints de API Utilizados
Las conexiones CSV se utilizan principalmente en:
- Creación de Tap (descubrimiento de fuente de datos desde archivos CSV)
- Creación de Sink (destino de datos para datos anonimizados como archivos CSV)
- Ejecución de Pipeline (extracción de datos desde y carga hacia archivos CSV)
Dependencia de Controlador Node.js
El controlador CSV depende de la biblioteca Node.js fast-csv:
- Biblioteca: fast-csv
- Propósito: Parseo y formateo rápido de CSV
- Características: API de streaming, manejo de encabezados, entrecomillado, escape
Parámetros Personalizados
El controlador CSV soporta parámetros personalizados adicionales que pueden especificarse en formato YAML para ajustar finamente el parseo CSV, formateo y comportamiento de manejo de archivos.
Parámetros de Archivo y Directorio
# Parámetros básicos
dir: "/ruta/a/archivos/csv"
extension: "csv"
# Opciones de Creación de Archivos
createDir: true # Crear automáticamente directorio si no existe
fileMode: "0644" # Permisos de archivo para archivos CSV creadosParámetros de Parseo
# Opciones de Encabezado
headers: true # Si los archivos CSV tienen encabezados
renameHeaders: false # Renombrar encabezados para evitar duplicados
strictColumnHandling: false # Aplicar estrictamente conteo consistente de columnas
# Delimitador y Formateo
delimiter: "," # Carácter delimitador de campos
quote: "\"" # Carácter de comillas
escape: "\"" # Carácter de escape para comillas
# Manejo de Datos
trim: true # Eliminar espacios en blanco de campos
rtrim: false # Eliminar espacios en blanco de la derecha de campos
ltrim: false # Eliminar espacios en blanco de la izquierda de campos
ignoreEmpty: true # Ignorar filas vacías
discardUnmappedColumns: false # Descartar columnas no presentes en encabezados proporcionados
# Manejo de Comentarios
comment: "#" # Carácter de comentario para ignorar líneas
# Validación
validate: false # Habilitar validación de filasParámetros de Formateo
# Opciones de Encabezado
writeHeaders: true # Incluir encabezados en archivos de salida
# Delimitador y Formateo
delimiter: "," # Carácter delimitador de campos
quote: "\"" # Carácter de comillas
escape: "\"" # Carácter de escape para comillas
rowDelimiter: "\n" # Carácter delimitador de filas
# Comportamiento de Entrecomillado
quoted: true # Entrecomillar todos los campos
quotedEmpty: true # Entrecomillar campos vacíos
quotedString: false # Entrecomillar campos de tipo string
# Manejo de Datos
includeEndRowDelimiter: false # Incluir delimitador al final del archivo
writeBOM: false # Escribir Marca de Orden de Bytes (BOM) para UTF-8
transform: {} # Función de transformación para datosParámetros de Streaming
# Opciones de Stream
objectMode: true # Habilitar modo objeto para streams
highWaterMark: 128 # Tamaño de buffer para streaming
# Procesamiento por Lotes
batchSize: 1000 # Número de filas a procesar en lotesEjemplos de Configuraciones
Configuración Básica
dir: "/datos/archivos_csv"
extension: "csv"
headers: true
delimiter: ","
quote: "\""Configuración Avanzada de Parseo
dir: "/datos/entrada"
extension: "txt"
headers: ["id", "nombre", "email", "edad"]
delimiter: "|"
quote: "\""
escape: "\\"
trim: true
ignoreEmpty: true
discardUnmappedColumns: true
comment: "#"
strictColumnHandling: true
highWaterMark: 256
batchSize: 2000Configuración de Formateo
dir: "/datos/salida"
extension: "csv"
writeHeaders: true
delimiter: ","
quote: "\""
quoted: true
quotedEmpty: true
includeEndRowDelimiter: true
writeBOM: true
rowDelimiter: "\n"
objectMode: true
fileMode: "0644"Configuración Delimitada por Tabuladores
dir: "/datos/archivos_tsv"
extension: "tsv"
headers: true
delimiter: "\t" # Carácter tabulador
quote: "\""
trim: true
ignoreEmpty: true