Unir archivos CSV
Combinar dos archivos CSV por una clave común es exactamente el tipo de tarea que resulta trivial en una base de datos y dolorosa en una hoja de cálculo, sobre todo cuando el número de filas supera lo que un BUSCARV puede manejar con soltura. Este endpoint toma dos archivos y una clave de unión y devuelve un solo conjunto combinado, usando la misma lógica de joins interno, izquierdo y externo en la que las bases de datos relacionales han confiado por décadas.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
El problema cotidiano detrás de una unión
Pocas veces dos sistemas exportan datos en un solo archivo ordenado. Los pedidos viven en una exportación, los datos del cliente en otra; los catálogos de producto están separados de los conteos de inventario; la lista de contactos de una herramienta de marketing y la lista de cuentas de un sistema de facturación solo comparten un correo electrónico como punto en común. Reconciliarlos a mano implica abrir ambos archivos, ordenarlos por la columna compartida y unir las filas manualmente, un proceso lento, propenso a errores, y que hay que repetir cada vez que una de las fuentes se actualiza.
Elegir el tipo de join correcto
Llame a POST /data/merge-csv con dos archivos y la columna que los conecta, e indique si quiere un join interno, que conserva solo las filas presentes en ambos archivos; un join izquierdo, que conserva todas las filas del primer archivo y deja vacíos donde no hay coincidencia; o un join externo, que conserva todas las filas de ambos archivos sin importar si coinciden. Esta distinción importa más de lo que parece: un join interno descarta en silencio a los clientes que aún no han comprado, mientras que un join izquierdo los conserva con los campos de pedido vacíos, y elegir el tipo equivocado puede corromper silenciosamente un reporte posterior.
De dónde viene realmente la lógica de los joins
Los joins interno, izquierdo y externo no son una invención de este endpoint; provienen directamente del álgebra relacional, el fundamento matemático que las bases de datos SQL han usado desde los años setenta para combinar tablas. Traer ese mismo rigor a archivos CSV simples significa obtener un comportamiento predecible y bien entendido —el mismo que produciría una cláusula JOIN en una base de datos— sin necesidad de cargarlos primero en una.
Qué pasa con claves duplicadas o que no coinciden
Los archivos reales casi nunca encajan perfectamente: las claves pueden faltar en un lado, estar duplicadas, o tener formato inconsistente, como un identificador numérico guardado como texto con ceros a la izquierda en un archivo y sin ellos en el otro. La unión sigue una coincidencia exacta de clave según se configure, así que limpiar o normalizar la columna de unión de antemano —con un paso de transformación, por ejemplo— produce los resultados más confiables, en particular en archivos donde un lado tiene más claves duplicadas que el otro.
Su lugar dentro de un flujo más amplio
Como la unión corre de forma asíncrona y devuelve un task_id de inmediato, se combina de forma natural con otros pasos: transformar una columna primero, unir dos fuentes después, filtrar el resultado combinado al final. Los pipelines de reportes automatizados, los trabajos nocturnos de reconciliación y las solicitudes puntuales de un analista se benefician todos de no tener que cargar dos archivos en una hoja de cálculo ni escribir un script desechable solo para combinarlos.
Qué puede hacer con ella
Pedidos y registros de clientes
Combine una exportación de pedidos con una lista de clientes por customer_id para obtener un solo archivo que muestre qué compró cada cliente, sin tocar una base de datos.
Reconciliación de inventario y catálogo
Combine un archivo de conteo de existencias de bodega con un catálogo de productos por SKU para ver el stock actual junto al nombre y la categoría de cada producto.
Datos de marketing y facturación entre herramientas
Combine la exportación de contactos de una plataforma de marketing con la lista de cuentas de un sistema de facturación por correo electrónico, para ver el nivel de interacción junto a los ingresos.
Reportes con múltiples fuentes
Aplique un join izquierdo entre una lista maestra de empleados y una exportación de capacitaciones completadas, para que los jefes vean quién falta por completarlas, no solo quién ya lo hizo.
Preguntas frecuentes
¿Qué tipos de join soporta esta api para unir archivos csv?
Interno, izquierdo y externo, con la misma lógica que usa una cláusula JOIN en SQL, así que puede elegir si las filas sin coincidencia se descartan o se conservan.
¿Puedo unir más de dos archivos CSV a la vez?
Cada solicitud une dos archivos por una clave; encadene varias tareas de unión para combinar tres o más archivos, pasando el resultado de una como entrada de la siguiente.
¿Qué pasa si la clave de unión tiene formato distinto en cada archivo?
La unión compara las claves exactamente como se envían, así que normalizar diferencias de formato, como ceros a la izquierda o mayúsculas y minúsculas, de antemano con un paso de transformación da la tasa de coincidencia más confiable.
¿Hay un plan gratuito para probar el endpoint de unión?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Qué pasa con las claves duplicadas durante un join?
Cada par de filas que coincide se incluye en el resultado, así que una clave duplicada en un lado genera varias filas de salida, exactamente como lo haría un join en una base de datos.
¿Puedo unir archivos CSV grandes?
Sí, envíe la unión como una solicitud asíncrona y reciba un task_id de inmediato, así los archivos grandes se procesan en segundo plano sin bloquear su flujo.
¿Cómo recibo el archivo combinado?
A través de un webhook firmado, recomendado para automatización, o un enlace firmado válido por 24 horas si prefiere descargarlo manualmente.
¿Cuánto cuesta la API para unir archivos CSV?
$0.002 por solicitud, cobrado únicamente cuando la unión se completa con éxito.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/merge-csv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/merge-csv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/merge-csv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/merge-csv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/merge-csv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.merge_csv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |