Cuando necesite comparar archivos CSV online, lo principal es evitar una comparación de texto sin formato. Los archivos CSV contienen datos estructurados. Las filas cambian de posición, las columnas se renombran, las exportaciones incorporan nuevos campos y una comparación línea por línea se convierte rápidamente en ruido.

Prefiero comparar los archivos como tablas: elegir una clave estable, mapear las columnas, revisar las filas añadidas, eliminadas, modificadas y sin cambios y, después, exportar las diferencias. Para eso está diseñada la herramienta CSV Diff de Datablist.

En este tutorial compararé una exportación antigua de un catálogo de productos con un archivo más reciente de ofertas de un proveedor. Los dos archivos no tienen las mismas columnas, pero comparten EAN, Internal ID, Price y Stock. Es un ejemplo realista: relacionaremos los productos por EAN, compararemos el precio y el stock y exportaremos el resultado.

Enlaces rápidos

El método más rápido para comparar archivos CSV

Si ya tiene preparados los dos archivos, el proceso es breve:

  1. Abra la herramienta CSV Diff de Datablist.
  2. Suba el archivo más antiguo como CSV original.
  3. Suba el archivo más reciente como CSV actualizado.
  4. Empiece con la detección automática y confirme después la columna clave.
  5. Mapee las columnas si los archivos utilizan nombres distintos.
  6. Mantenga el full outer join en la primera revisión.
  7. Revise las filas modificadas, añadidas, eliminadas y sin cambios.
  8. Exporte el CSV completo con las diferencias en la primera pasada.
  9. Si necesita un archivo más breve para compartir, cambie a la exportación de filas modificadas.

Este método funciona mejor que una comparación de texto porque sigue los registros, no los números de línea. Si una exportación del CRM cambia el orden de los contactos o un proveedor añade una columna, una comparación de texto puede hacer que todo el archivo parezca distinto. Una comparación de tablas le indica qué registros y celdas han cambiado.

🔑 Elija la clave de fila antes de evaluar las diferencias

Una buena columna clave convierte una comparación confusa en una útil. Utilice un ID, email, SKU, EAN o identificador interno que se mantenga estable entre exportaciones.

Dataset de ejemplo: CSV de productos vs. CSV de ofertas

Para este tutorial utilizaré un dataset ficticio de ecommerce. El primer archivo es una exportación antigua de un catálogo de productos. El segundo es un feed más reciente con ofertas de un proveedor o marketplace.

El CSV original de productos tiene este aspecto:

ÍndiceEANID internoNombreMarcaCategoríaPrecioMonedaStockDisponibilidad
15901234123457PRD-001Botella herméticaAcme OutdoorAire libre24.90EUR42En stock
25901234123464PRD-002Fiambrera bentoNorthlineCocina18.50EUR120En stock
35901234123471PRD-003Bolsa de algodónUrban GoodsAccesorios9.90EUR0Agotado
45901234123488PRD-004Lámpara de escritorio LEDLumaOficina39.00EUR18En stock
55901234123495PRD-005Esterilla de yogaBalanceFitDeporte29.00EUR65En stock
105901234123549PRD-010Ratón inalámbricoClickProElectrónica34.00EUR55En stock

El CSV actualizado de ofertas tiene menos campos descriptivos, pero conserva los identificadores y valores comerciales que me interesan:

ID de ofertaEANID internoSKU del proveedorStockPrecio
OFF-0015901234123457PRD-001ACM-BTL-013823.90
OFF-0025901234123464PRD-002NTH-LBX-0212018.50
OFF-0035901234123471PRD-003UGD-TOTE-03259.90
OFF-0045901234123488PRD-004LMA-LAMP-041835.00
OFF-0055901234123495PRD-005BFT-MAT-056529.00
OFF-0085901234123556PRD-011CLP-CAB-114416.50

Este par reúne los casos que suelo buscar en un ejemplo de CSV Diff: valores modificados, filas nuevas, filas eliminadas, filas sin cambios y esquemas diferentes. Con la muestra completa, espero que PRD-001, PRD-003, PRD-004, PRD-006 y PRD-010 aparezcan como modificados; que PRD-011 y PRD-012 figuren como añadidos, y que PRD-008 y PRD-009 consten como eliminados.

Paso 1: suba los archivos CSV original y actualizado

Abra la herramienta CSV Diff. Verá dos zonas de carga:

  • Original CSV: la exportación anterior, una versión antigua o el archivo de referencia.
  • Updated CSV: la exportación más reciente que desea comparar con el original.

El orden importa. Si una fila solo existe en el archivo actualizado, Datablist la marca como added. Si solo existe en el archivo original, la marca como removed.

En el ejemplo de productos, subo el CSV de productos como archivo original porque corresponde a la exportación más antigua del catálogo. Subo el CSV de ofertas como archivo actualizado porque representa el feed más reciente del proveedor.

Pantalla de carga de CSV Diff con los campos Original CSV y Updated CSV
Pantalla de carga de CSV Diff con los campos Original CSV y Updated CSV

Cuando seleccione ambos archivos, la herramienta los analizará y preparará la primera comparación. Los CSV se procesan y comparan en su navegador. El parser detecta separadores habituales —como comas, punto y coma, tabulaciones y barras verticales— y admite codificaciones comunes, como UTF-8 y archivos de tipo Windows-1252.

Aun así, compruebo el orden de los archivos antes de revisar el resultado. Muchas comparaciones incorrectas se deben a haber intercambiado los archivos antiguo y nuevo y, por tanto, interpretar al revés las filas añadidas y eliminadas.

Paso 2: elija cómo relacionar las filas

La forma de relacionar las filas es el ajuste más importante de todo el proceso.

Datablist puede empezar con la detección automática. Busca columnas que probablemente contengan identificadores, como id, email, sku, uuid, external_id, record_id, user_id, contact_id y company_id.

Para datos de productos, normalmente prefiero:

  • EAN, si está disponible y es único.
  • Internal ID, si faltan valores EAN, están duplicados o dependen del proveedor.
  • SKU, solo si ambos archivos utilizan el mismo SKU.

En archivos de un CRM o listas de leads, la clave equivalente podría ser email, contact_id, company_id o el ID de registro del CRM.

Ajustes de CSV Diff con detección automática de filas y full outer join
Ajustes de CSV Diff con detección automática de filas y full outer join

El modo de correspondencia depende de la estructura de sus datos:

  • Utilice una sola clave para la mayoría de las exportaciones. Una columna estable es más fácil de auditar.
  • Utilice varias claves cuando una única columna no sea lo bastante específica. Por ejemplo, Company Domain más Email.
  • Compare filas completas solo si no dispone de un identificador estable.
  • Use la detección automática en la primera pasada, pero confirme la clave detectada antes de confiar en los totales.

⚠️ Una clave poco fiable genera demasiadas filas añadidas y eliminadas

Si la clave falta, está duplicada o cambia de formato entre exportaciones, dos registros equivalentes pueden aparecer como una fila eliminada y otra añadida. Revise los avisos de claves duplicadas antes de utilizar el resultado para una actualización.

Las claves duplicadas no son motivo para descartar la comparación, pero sí una señal para revisar los datos con más cuidado. La herramienta identifica las claves duplicadas, y trato esas filas como registros que deben comprobarse antes de dar por buenos los totales.

Paso 3: mapee columnas con nombres diferentes

El mapeo de columnas determina qué campos se comparan.

En el ejemplo de productos, ambos archivos comparten EAN, Internal ID, Stock y Price. El archivo original también contiene Name, Brand, Category, Currency y Availability. El actualizado incluye Offer ID y Supplier SKU.

No quiero que los metadatos exclusivos del proveedor generen cambios. Quiero comparar las columnas que responden a mi necesidad de negocio:

  • Relacionar las filas mediante EAN.
  • Comparar Stock con Stock.
  • Comparar Price con Price.
  • Conservar columnas descriptivas como contexto cuando ayuden a revisar la fila.
  • Dejar sin mapear los campos no relacionados cuando no deban influir en la comparación.

Si las columnas tienen nombres idénticos, Datablist puede alinearlas por su nombre. No es necesario que su orden coincida. El mapeo manual resulta importante cuando cambian las etiquetas. Una exportación del CRM podría utilizar customer_id en un archivo y Customer ID en otro. Mapéelos únicamente si representan el mismo valor.

💡 Mapee solo las columnas que quiera comparar

Es habitual que aparezcan nuevas columnas de metadatos en feeds de proveedores y exportaciones de CRM. Si un campo no debe contabilizarse como un cambio, déjelo sin mapear o utilícelo solo como contexto durante la revisión.

Este paso parece menor, pero suele ser el que más tiempo ahorra. Una clave incorrecta relaciona mal las filas. Un mapeo de columnas incorrecto distorsiona el número de cambios.

Paso 4: elija el tipo de join y las opciones de comparación

Para la primera ejecución, recomiendo esta configuración:

  • Full outer join.
  • Una columna clave estable.
  • Ignorar los espacios iniciales y finales.
  • Normalizar los valores vacíos y similares a null.
  • Mantener la comparación sensible a mayúsculas y minúsculas, salvo que estas diferencias no sean relevantes.

El full outer join es la mejor opción predeterminada porque muestra todo: filas relacionadas, añadidas y eliminadas. Le ofrece una visión global de la auditoría antes de acotar el resultado.

Opciones de CSV Diff para el orden de columnas, espacios, mayúsculas y normalización de valores similares a null
Opciones de CSV Diff para el orden de columnas, espacios, mayúsculas y normalización de valores similares a null

El tipo de join determina qué aparece en el resultado:

  • El full outer join muestra las filas relacionadas, las que solo existen en el archivo original y las que solo aparecen en el actualizado.
  • El inner join muestra únicamente los registros presentes en ambos archivos. Utilícelo si solo le interesan los cambios en filas compartidas.
  • El left join conserva el archivo original como base y excluye las filas que solo existen en el actualizado.

Las opciones de comparación reducen el ruido causado por el formato:

  • Ignore whitespace elimina los espacios iniciales y finales antes de comparar las celdas.
  • Ignore case considera que Acme y ACME son iguales.
  • La normalización de valores vacíos y similares a null considera equivalentes los espacios en blanco, null, undefined, nil, none, n/a y na.

📘 Utilice full outer join en la primera auditoría

Empiece con una visión amplia y acótela después. Cuando haya comprobado que los totales de filas añadidas, eliminadas y modificadas son coherentes, exporte un archivo más pequeño con las filas modificadas para revisarlo.

Con archivos grandes, el rendimiento depende del navegador y del dispositivo. La vista previa se limita para mantener la fluidez, mientras que el CSV descargable se genera a partir del resultado completo. Si una exportación es demasiado grande para revisarla con comodidad, primero puede dividir el CSV en varios archivos más pequeños.

Paso 5: revise las filas añadidas, eliminadas y modificadas

Una vez ejecutada la comparación, empiece por los estados de las filas:

  • added: la clave solo existe en el CSV actualizado.
  • removed: la clave solo existe en el CSV original.
  • changed: la clave existe en ambos archivos y ha cambiado al menos un valor mapeado.
  • unchanged: la clave existe en ambos archivos y los valores mapeados coinciden tras la normalización.

El ejemplo de productos ofrece casos claros:

  • PRD-001 se modificó porque Price pasó de 24.90 a 23.90 y Stock, de 42 a 38.
  • PRD-003 se modificó porque el stock pasó de 0 a 25.
  • PRD-011 se añadió porque su EAN solo aparece en el CSV de ofertas.
  • PRD-008 se eliminó porque su EAN solo aparece en el CSV de productos.

Utilice los filtros de estado para centrar la revisión. Normalmente empiezo por Changed y después compruebo Added y Removed. Dejo Unchanged para el final, salvo que necesite un historial de auditoría completo.

Vista previa de CSV Diff con filtros de estado, búsqueda y acciones para copiar y descargar
Vista previa de CSV Diff con filtros de estado, búsqueda y acciones para copiar y descargar

La vista de filas modificadas resulta útil cuando necesita consultar las diferencias celda por celda. Muestra el valor original y el actualizado uno junto al otro en cada columna modificada.

Vista de filas modificadas de CSV Diff con los valores original y actualizado en paralelo
Vista de filas modificadas de CSV Diff con los valores original y actualizado en paralelo

Antes de exportar, hago una breve comprobación de calidad:

  • ¿Parecen razonables los totales de filas añadidas y eliminadas?
  • ¿Ha relacionado la herramienta las filas mediante la clave prevista?
  • ¿Están señaladas las claves duplicadas?
  • ¿Se han mapeado correctamente las columnas?
  • ¿Se ignoran los cambios meramente de formato cuando corresponde?
  • ¿Tienen sentido algunas de las filas modificadas al desplegarlas?

La sección de resumen ofrece otra comprobación rápida. Muestra los datos del procesamiento, las columnas mapeadas, los avisos de claves duplicadas y los totales de cada estado.

Tarjetas de resumen de CSV Diff con los totales de filas modificadas, añadidas, eliminadas y sin cambios, además del procesamiento y las columnas mapeadas
Tarjetas de resumen de CSV Diff con los totales de filas modificadas, añadidas, eliminadas y sin cambios, además del procesamiento y las columnas mapeadas

Si los números resultan extraños, no exporte todavía. Revise primero la clave y el mapeo de columnas, ya que ahí se originan la mayoría de los problemas.

Paso 6: exporte el resultado de CSV Diff

Cuando la vista previa sea correcta, exporte el resultado. Datablist ofrece varios formatos de salida según sus necesidades:

  • Summary CSV: para consultar el estado de las filas, las claves, los totales y un resumen fácil de auditar.
  • Changed rows CSV: cuando alguien solo necesita revisar los registros con diferencias.
  • Full diff CSV: para ver en paralelo los valores originales y actualizados.

Para una primera ejecución, prefiero Full diff CSV. Conserva más contexto y facilita explicar un cambio más adelante. Una vez validado el proceso, utilizo Changed rows CSV para obtener un archivo más breve.

También puede elegir el separador:

  • Coma para la mayoría de los procesos con hojas de cálculo.
  • Punto y coma si su configuración regional o el sistema de destino lo requiere.
  • Barra vertical o tabulación para herramientas que exijan esos formatos.

La herramienta permite copiar o descargar el CSV con las diferencias. Los archivos descargados siguen este patrón:

csv-diff-{originalBase}-vs-{updatedBase}.csv

Si el resultado exportado es grande y necesita filtrarlo o editarlo antes de compartirlo, consulte la guía de Datablist para editar archivos CSV grandes online.

Tabla de ejemplo del resultado

Esta es una pequeña muestra del aspecto que puede tener una exportación completa de diferencias en el ejemplo de productos.

statuskeychanged_columnsoriginal:Priceupdated:Priceoriginal:Stockupdated:Stock
changed5901234123457Price|Stock24.9023.904238
changed5901234123471Stock9.909.90025
added590123412355616.5044
removed59012341235257.5088

El CSV exportado puede incluir:

  • status: added, removed, changed o unchanged.
  • key: el valor utilizado para relacionar la fila.
  • __row_index_original: el número de fila en el CSV original, cuando exista.
  • __row_index_updated: el número de fila en el CSV actualizado, cuando exista.
  • __duplicate_key: indica si la clave seleccionada aparece más de una vez.
  • changed_columns: los campos modificados.
  • changed_columns_count: el número de campos modificados.
  • summary: un resumen legible de los cambios.
  • Pares original:{column} y updated:{column} para revisar los valores en paralelo.

Me gusta este formato porque es fácil de compartir. Cualquier persona puede filtrar por status = changed, ordenar por changed_columns_count o aislar los registros añadidos y eliminados sin repetir la comparación.

Cuándo conviene comparar archivos CSV de este modo

Este proceso es adecuado siempre que tenga dos versiones y necesite saber qué ha cambiado. Algunos buenos ejemplos son:

  • Actualizaciones de precios y stock en catálogos de productos.
  • Revisión del feed de un proveedor antes de importar nuevas ofertas.
  • Exportaciones de un CRM antes y después de una limpieza.
  • Actualizaciones de listas de leads.
  • Comparación de inventarios en fechas distintas.
  • Auditorías de hojas de cálculo compartidas.
  • Exportaciones CSV generadas mediante un proceso de conversión desde JSON.

Por ejemplo, si primero convierte un JSON anidado a CSV, puede utilizar CSV Diff después para comparar dos exportaciones generadas. Si prepara registros para un CRM, ejecute la comparación antes de una limpieza de datos más amplia para saber qué filas han cambiado.

Comparar, unir o deduplicar: elija el proceso adecuado

Comparar archivos CSV no es lo mismo que unirlos o deduplicarlos. Utilice CSV Diff cuando su pregunta sea:

¿Qué ha cambiado entre estas dos versiones?

Utilice un proceso de join cuando quiera saber:

¿Cómo combino campos de dos archivos?

Para ello, consulte la guía para unir archivos CSV mediante un identificador único.

Utilice la deduplicación cuando la pregunta sea:

¿Qué registros se repiten en uno o varios archivos?

En ese caso, consulte la guía para eliminar duplicados de un CSV.

La diferencia es importante porque cada proceso persigue un objetivo distinto. CSV Diff sirve para comparar versiones y exportar las diferencias. No es una herramienta de fuzzy matching ni de fusión de archivos.

Solución de problemas y casos especiales

Las filas aparecen añadidas y eliminadas, no modificadas

Compruebe primero la columna clave. Si la clave ha cambiado entre los archivos, Datablist no puede interpretar ambas filas como el mismo registro. Revise también el orden de los archivos. Si intercambia los archivos original y actualizado, las filas añadidas y eliminadas aparecerán al revés.

Aparecen demasiadas celdas modificadas

Revise las opciones de comparación. Active la eliminación de espacios si estos no son relevantes, ignore las diferencias entre mayúsculas y minúsculas cuando no importen, normalice los valores vacíos si los espacios en blanco y los marcadores deben considerarse iguales y compruebe el mapeo de los campos renombrados.

Los nombres de las columnas son diferentes

Utilice el mapeo manual. Mapee los campos solo si significan lo mismo. Deje sin mapear las columnas no relacionadas cuando no deban influir en la comparación.

Aparecen claves duplicadas

Considere las claves duplicadas como una señal de revisión. El resultado puede seguir siendo útil, pero los duplicados indican que el identificador elegido no es lo bastante único. Limpie los archivos de origen o seleccione una clave más fiable antes de utilizar los totales en una importación.

El archivo tarda demasiado o la vista previa está limitada

El rendimiento con archivos grandes depende del navegador y del dispositivo. Utilice la vista previa para revisar los datos y descargue después el CSV con las diferencias cuando necesite el resultado completo.

El análisis del CSV falla

Compruebe si hay campos entrecomillados sin cerrar, delimitadores poco habituales o problemas de codificación. Un solo campo con comillas mal cerradas puede invalidar todo el archivo CSV.

Conclusión

La mejor forma de comparar dos exportaciones CSV es tratarlas como datos, no como texto. Suba el archivo antiguo como CSV original y el nuevo como CSV actualizado, elija una clave estable, mapee las columnas, revise los estados de las filas y exporte las diferencias.

Mi configuración predeterminada es sencilla: full outer join, una clave estable, eliminación de espacios, normalización de valores similares a null y exportación completa de las diferencias para la primera revisión.

Puede realizar todo el proceso con la herramienta CSV Diff de Datablist.

FAQ

¿Cómo puedo comparar dos archivos CSV online?

Abra la herramienta CSV Diff de Datablist, suba el archivo más antiguo como Original CSV y el más reciente como Updated CSV, elija una columna clave, revise el resultado y descargue el CSV con las diferencias.

¿Puedo comparar archivos CSV por ID, email, SKU o EAN?

Sí. Utilice el identificador compartido como columna clave. Algunas buenas opciones son los ID de registro, direcciones de email, SKU, EAN, ID internos, ID de empresa y otros valores que se mantengan estables entre exportaciones.

¿Qué ocurre si las filas tienen un orden diferente?

Utilice la correspondencia mediante una clave. Cuando las filas se relacionan por una clave estable, no es necesario que tengan el mismo orden en ambos archivos.

¿Puedo comparar archivos CSV con nombres de columna distintos?

Sí. Mapee manualmente las columnas cuando sus nombres sean diferentes. Por ejemplo, asocie customer_id de un archivo con Customer ID del otro si representan el mismo identificador.

¿Cuál es el mejor tipo de join para comparar archivos CSV?

Utilice full outer join en la primera auditoría. Muestra las filas relacionadas, añadidas y eliminadas. Use inner join solo si le interesan los registros presentes en ambos archivos.

¿Puedo ignorar espacios, mayúsculas o valores vacíos?

Sí. Puede eliminar espacios, comparar el texto sin distinguir entre mayúsculas y minúsculas y considerar iguales los campos vacíos o los marcadores similares a null. Normalmente mantengo activadas la eliminación de espacios y la normalización de valores vacíos.

¿Puedo exportar solo las filas modificadas?

Sí. Utilice la salida de filas modificadas cuando necesite un archivo de revisión más breve. Aun así, recomiendo exportar primero una vez el resultado completo para validar la comparación.

¿Qué significan added, removed, changed y unchanged?

added significa que la clave solo aparece en el CSV actualizado. removed, que solo aparece en el original. changed, que existe en ambos archivos pero difieren los valores mapeados. unchanged, que la clave aparece en ambos archivos y los valores mapeados coinciden.

¿Los archivos CSV se suben a un servidor?

Los archivos CSV se procesan y comparan en su navegador. Considere esta herramienta como una solución de comparación en el navegador, no como un proceso de importación o sincronización con una colección de Datablist.

¿Se pueden comparar archivos CSV grandes?

Sí, aunque el rendimiento con archivos muy grandes depende de su navegador y dispositivo. La vista previa está limitada para mantener la fluidez, pero el CSV descargable se genera a partir del resultado completo.