Importación de CSV en n8n: un ejercicio de validación y conciliación
Practica la importación de CSV en n8n con identificadores con ceros iniciales, categorías de rechazo y comprobaciones antes de cargar una Data Table temporal.

Comprobado con las fuentes citadas el .
Tu tarea de importación de CSV en n8n y los requisitos previos

Este ejercicio editorial te propone diseñar una importación de CSV en n8n que conserve intactos los identificadores, registre los datos rechazados y verifique los resultados almacenados. El flujo propuesto y los criterios de finalización no se han ejecutado ni validado. La tarea estará completa cuando cada registro de entrada tenga una clasificación y los registros almacenados coincidan con los aceptados.
Prepara un espacio de trabajo de n8n, una herramienta capaz de enviar CSV por HTTP y una Data Table vacía y desechable. Crea columnas de tipo String llamadas customer_id, name y email. n8n documenta columnas tipadas en Data Table, incluido String. Las Data Tables ofrecen almacenamiento limitado al proyecto para un uso ligero o moderado; estas fuentes no establecen una versión mínima universal ni la disponibilidad en un plan para este ejercicio completo.
Utiliza únicamente registros sintéticos. Creemos que un destino desechable hace más útil esta práctica: permite a quienes aprenden centrarse en explicar cada registro antes de decidir cómo debe comportarse una importación compartida.
Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/get-started/key-concept-glossary.md at main · n8n-io/n8n-docs · GitHub
Recibe el archivo CSV en n8n e inspecciona los identificadores

Crea un CSV con las cabeceras y los valores literales que aparecen a continuación, representando cada celda Vacío como un campo CSV vacío. Este conjunto de prueba sugerido contiene cinco registros de datos; la cabecera queda excluida del recuento. Trata customer_id como un identificador exacto y exige que los tres campos contengan texto que no sea solo espacios en blanco. La validación del formato del correo electrónico queda fuera de este ejercicio.
| customer_id | name | |
|---|---|---|
| 00127 | Ada | ada@example.invalid |
| 00420 | Ben | ben@example.invalid |
| 00127 | Ada repeat | repeat@example.invalid |
| 00009 | Vacío | missing@example.invalid |
| Vacío | Cy | cy@example.invalid |
Configura un Webhook para recibir datos binarios y conecta después Extract From File con la extracción de CSV. Haz coincidir la propiedad binaria de recepción del Webhook con el campo de entrada del extractor. Para la URL de prueba, selecciona Listen for test event antes de enviar tu archivo CSV a n8n; en producción se utiliza una URL distinta y es necesario publicar.
Compara los valores de customer_id inmediatamente después del análisis con los del CSV original. La documentación citada sobre extracción de CSV no establece si esta conserva los identificadores que parecen números ni qué ajuste del analizador lo garantiza. Detente si 00127 se convierte en 127. Un destino de tipo String o una conversión posterior no pueden recuperar los caracteres perdidos; resuelve la recepción de los datos antes de continuar.
Sources: Extract From File | Nodes | n8n Docs, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/README.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.webhook/common-issues.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.datatable/tables.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub
Clasifica los registros y concilia los recuentos antes de cargar

Una vez superada la comprobación de identificadores, utiliza Edit Fields para realizar un mapeo explícito y descarta los campos no utilizados si procede. n8n documenta el uso de JavaScript personalizado en el nodo Code y el enrutamiento condicional con If. El siguiente algoritmo sugerido para tu importación de CSV en n8n es un diseño editorial que debes implementar y verificar.
Mantén arrays de registros aceptados, no válidos y duplicados, junto con un resumen, en un único elemento de salida de Code. Conserva los valores originales de los campos y un índice del registro de origen, y añade los motivos del rechazo. Sigue este orden para que cada registro pertenezca exactamente a una categoría; ten en cuenta los requisitos documentados de vinculación de elementos de n8n cuando difieran las cantidades de elementos de entrada y salida.
- Inicializa arrays de categorías vacíos y un conjunto de valores customer_id aceptados.
- Inspecciona cada registro en el orden de origen; clasifica primero como no válidos los que carezcan de valores obligatorios.
- Para un registro válido, clasifica como duplicado un customer_id ya visto; de lo contrario, acéptalo y guarda su identificador.
- Calcula los recuentos de las categorías y devuelve juntos los arrays y el resumen, incluso cuando el array de aceptados esté vacío.
Para el conjunto de prueba, el resultado editorial esperado es de cinco registros de entrada: dos aceptados, dos no válidos y uno duplicado. Antes de Insert, utiliza If para evaluar recuento de entrada = recuento de aceptados + recuento de no válidos + recuento de duplicados. Dirige cualquier discrepancia a Stop And Error; solo la rama en la que coincidan los recuentos puede avanzar hacia la inserción. Prueba un conjunto adicional en el que todos los registros sean no válidos: conserva sus arrays de rechazos y su resumen, y omite la inserción cuando el array de aceptados esté vacío.
Remove Duplicates documenta la eliminación de duplicados en la entrada actual según los campos seleccionados tras su revisión en n8n 1.64.0; las versiones anteriores requieren su documentación correspondiente. Documenta la eliminación, pero no una salida de duplicados rechazados. En nuestra opinión, la clasificación explícita es la mejor opción de aprendizaje aquí porque el ejercicio te pide explicar los registros rechazados.
Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.set.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.if.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/reusable-content/.gitbook/includes/integrations/builtin/core-nodes/code-node.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates/README.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror.md at main · n8n-io/n8n-docs · GitHub
Completa la importación a una Data Table de n8n y reflexiona

Para esta importación a una Data Table de n8n, los registros CSV deben superar la comprobación previa a la carga antes de enviar únicamente los aceptados a Insert y mapear cada columna manualmente. Vuelve a leer el destino con Return All mientras los demás procesos de escritura permanecen en pausa; n8n advierte de que los cambios simultáneos pueden provocar omisiones o repeticiones durante las lecturas paginadas. Compara el recuento almacenado y los valores exactos de los identificadores con el array de aceptados y comprueba después los valores de name y email.
Si tu importación de CSV en n8n produce filas ausentes o una discrepancia en el recuento, inspecciona las clasificaciones guardadas, las entradas de inserción y los ajustes de lectura posterior antes de volver a ejecutarla. La referencia de operaciones señala comportamientos que dependen de la versión, advierte de que Insert por sí solo puede duplicar registros al repetir ejecuciones y describe salidas vacías cuando el filtrado elimina todos los elementos. Una rama vacía, por sí sola, no es prueba suficiente de finalización.
Después de la carga, utiliza una comprobación If independiente para comparar el recuento y los valores de los campos leídos del destino con los registros aceptados, dirigiendo cualquier discrepancia a Stop And Error. Un fallo no implica que se reviertan las escrituras anteriores. Los bloqueos en producción, las garantías transaccionales y la recuperación de escrituras parciales quedan fuera de este ejercicio aislado. Termina dejando constancia de las siguientes decisiones de reflexión sugeridas.
Sources: n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.if.md at main · n8n-io/n8n-docs · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows.md at main · n8n-io/n8n-docs · GitHub, skills/skills/n8n-data-tables-official/references/OPERATIONS.md at main · n8n-io/skills · GitHub, n8n-docs/docs/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror.md at main · n8n-io/n8n-docs · GitHub


