Abre un archivo CSV para comprobar su estructura: cada registro frente al número de campos del encabezado, nombres de columna vacíos o duplicados, comillas sueltas, saltos de línea mezclados y líneas en blanco. Añade reglas opcionales por columna, como número entero, fecha, correo, obligatorio, único, valores permitidos o una expresión regular, y cada problema aparece con su fila de datos, su columna y su valor. Las reglas usan el vocabulario de Table Schema de Frictionless. El archivo se comprueba en tu navegador, sin subirlo.
Cómo validar un archivo CSV
- Abre un archivo
.csv,.tsvo.txt. El delimitador y la marca de orden de bytes de UTF-8 o UTF-16 se detectan solos; si las columnas no se ven bien, elige otro delimitador o una codificación heredada en la configuración de importación. - Si quieres, indica el número de columnas que debe tener cada registro. Si lo dejas vacío, se usa el número de columnas del encabezado.
- Si quieres, añade reglas para las columnas que te interesan: un tipo, si el valor es obligatorio o debe ser único, valores permitidos, un mínimo y un máximo, un rango de longitud o un patrón.
- Ejecuta la comprobación y revisa el informe: primero los errores, luego los avisos. Corrige los valores en el editor de CSV u ordénalos con Limpiar CSV, y vuelve a validar.
Para ver los tipos, los vacíos y los valores distintos de cada columna antes de escribir reglas, analiza el archivo con Analizar CSV.
Comprobaciones de estructura
| Número de campos (error) | Un registro tiene más o menos campos que el encabezado, o que el número que indicaste. RFC 4180 espera que todos los registros tengan el mismo número de campos; una diferencia suele deberse a un delimitador sin comillas o a un valor que falta. |
|---|---|
| Encabezado vacío (error) | Un nombre de columna está vacío o solo tiene espacios. El informe indica su posición. |
| Encabezado duplicado (error) | Dos nombres de columna son iguales después de quitar los espacios de los extremos. El informe indica ambas posiciones. |
| Comilla suelta (aviso) | Aparece una comilla dentro de un valor sin comillas, como 5" screen. El valor se conserva tal cual; el informe da el recuento para todo el archivo. |
| Texto tras una comilla de cierre (aviso) | Hay caracteres después de una comilla de cierre y antes del siguiente delimitador, como en "abc"x. |
| Saltos de línea mezclados (aviso) | El archivo mezcla finales de registro CRLF, LF y CR. El informe cuenta cada tipo. |
| Líneas en blanco (aviso) | Líneas vacías entre registros. Se omiten y el informe las cuenta. |
| Espacios alrededor (aviso) | Un valor tiene espacios antes o después del texto. Activado por defecto; los valores que solo contienen espacios no se señalan. |
Un valor entre comillas que nunca se cierra detiene la comprobación con un error que indica el registro donde empieza, porque el resto del archivo no se puede dividir en registros de forma fiable.
Reglas por columna
| Tipo: número entero | Solo un signo opcional y dígitos, como -12 o 007. Los valores que superan ±9 007 199 254 740 991 se señalan, así que para identificadores largos usa una regla de texto con patrón. |
|---|---|
| Tipo: número | Notación decimal simple con punto, como 3.5, -0.25 o 1e3. Sin separadores de miles, moneda ni espacios alrededor. |
| Tipo: booleano | true o false, en mayúsculas o minúsculas. 1, 0, yes y no se señalan. |
| Tipo: fecha, fecha y hora | Una fecha real del calendario escrita como YYYY-MM-DD, así que 2024-02-30 se señala. Fecha y hora añade una hora (2024-03-05T09:30, con segundos y un desfase Z o +02:00 opcionales). |
| Tipo: texto con formato | Correo electrónico (una comprobación simple de la forma name@domain.tld, no una prueba de que el correo llegue), URI (una URL absoluta con esquema) o UUID (versiones 1 a 8). |
| Obligatorio | El valor no puede estar vacío. Sin esta regla, los valores vacíos pasan todas las demás. |
| Único | Ningún valor puede repetirse en la columna. El informe indica la fila donde apareció por primera vez. Los valores vacíos no se comparan. |
| Valores permitidos | El valor debe coincidir exactamente con uno de los de la lista, mayúsculas y espacios incluidos. |
| Mínimo, máximo | Límites incluidos para columnas de número entero y número, o fechas ISO para columnas de fecha y de fecha y hora. |
| Longitud mínima y máxima | Se cuenta en caracteres Unicode, así que é y 日 cuentan como uno cada uno. |
| Patrón | Una expresión regular que debe coincidir con el valor completo, como exige Table Schema; por ejemplo, [A-Z]{2}\d{4}. Distingue mayúsculas y minúsculas. |
Una regla se aplica a la columna cuyo encabezado coincide exactamente con su nombre; las reglas de columnas que no están en el archivo se omiten. Las reglas se pueden guardar como archivo JSON de Table Schema y volver a cargar para la siguiente exportación; los tipos y claves desconocidos de un esquema cargado se ignoran.
Cómo leer el informe
- Los números de fila cuentan los registros de datos después del encabezado (el encabezado es la fila 0). Un valor con un salto de línea entre comillas sigue siendo un único registro, así que el número de fila puede no coincidir con el número de línea de un editor de texto.
- Cada problema indica su columna y cita el valor, para que puedas buscarlo en el visor de CSV o en el editor.
- Los errores rompen la estructura o una regla; los avisos señalan datos que son CSV válido, pero que a menudo dan problemas al importar.
- Se listan hasta 5000 problemas. A partir de ahí se siguen contando los totales por tipo de problema y la lista se marca como truncada.
Límites y privacidad
El validador lee un registro cada vez, así que los archivos que superan el límite interactivo de 25 MB se comprueban en modo de flujo en segundo plano, con progreso y opción de cancelar. En modo de flujo, los registros con menos campos que el encabezado se completan por ahora antes de la comprobación, así que solo los registros con campos de más se señalan como error de número de campos.
La validación se hace en tu navegador. El CSV no se sube a ningún servidor.
Ejemplo
Una exportación de altas comprobada con cuatro reglas: id es un número entero obligatorio y único; email es un texto obligatorio con formato de correo; signup_date es una fecha; plan admite basic, pro y team. La salida es el informe del validador, un problema por línea tras el resumen: una fecha imposible, un correo sin sufijo de dominio, Pro con mayúscula, un id repetido, un correo que falta y team con un espacio al final, que es a la vez un aviso y un valor no permitido.
id,email,signup_date,plan 1,ana@example.com,2024-02-30,pro 2,kim@example,2024-03-01,Pro 2,bao@example.com,2024-03-04,basic 4,,2024-03-05,team
{"rows":4,"errors":6,"warnings":1,"truncated":false}
{"code":"type","row":1,"column":"signup_date","value":"2024-02-30","params":{"type":"date"}}
{"code":"format","row":2,"column":"email","value":"kim@example","params":{"format":"email"}}
{"code":"enum","row":2,"column":"plan","value":"Pro","params":{"allowed":"basic, pro, team"}}
{"code":"unique","row":3,"column":"id","value":"2","params":{"first":2}}
{"code":"whitespace","row":4,"column":"plan","value":"team ","params":{}}
{"code":"required","row":4,"column":"email","value":"","params":{}}
{"code":"enum","row":4,"column":"plan","value":"team ","params":{"allowed":"basic, pro, team"}}Preguntas frecuentes
¿Por qué un valor con espacios no pasa una lista de valores permitidos?
Las reglas comparan el valor exactamente como está escrito, sin quitar espacios, así que team no es team. Recorta la columna con Limpiar CSV o corrige la exportación.
¿La validación modifica mi archivo?
No. Solo lee el archivo e informa de lo que encuentra. Corrige los problemas en el editor o en el sistema de origen.
¿Puedo reutilizar las mismas reglas en cada exportación mensual?
Sí. Guarda las reglas como archivo JSON de Table Schema y cárgalo la próxima vez; las reglas se asignan a las columnas por su nombre.