Importación de Datos en Rails: Del modo menos indicado al óptimo

Guía práctica para importar datos desde JSON o Excel en Rails: tres enfoques de rendimiento, con insert_all y activerecord-import; batching, transacciones y lookups para grandes volúmenes de datos.

24 ago 2025 • 4 min de lectura • Equip Q2BSTUDIO

Inteligencia-Artificial-

Este post fue 100% creado con ejemplos, codigo y experiencias reales, formateado para mejor lectura con ayuda de IA. La inteligencia artificial puede ayudar a organizar y estructurar contenido, pero no sustituye el conocimiento y la experiencia practica de los desarrolladores.

Codigo completo disponible en GitHub en la ruta https://github.com/rodrigonbarreto/event_reservation_system/tree/blog_post_import_data

Importar datos desde archivos JSON o Excel es una tarea habitual en proyectos Rails. En este articulo muestro tres enfoques con resultados muy distintos. En una prueba local con 10000 registros la diferencia fue de aproximadamente 40 segundos contra aproximadamente 5 segundos, una mejora superior a 8 veces.

Preparacion del escenario: generamos datos mock para probar. Ejemplo de generador de archivos: crear un archivo llamado file_generator.rb en la raiz del proyecto y ejecutar ruby file_generator.rb. Esto genera el archivo blog_json_data_10k.json con 10000 posts simulados.

Clase auxiliar JsonImporter: una clase simple que lee el archivo JSON y devuelve el array. Esta implementacion carga todo el archivo en memoria. Existen formas mas eficientes para ficheros enormes como streaming y chunking, pero aqui el foco es la importacion a la base de datos.

Como probar las implementaciones en consola Rails: abrir rails console y ejecutar las importaciones: Importer::BadImporter.import! para la version no recomendable; Importer::BlogDataImporter.import! para la version razonable; Importer::BlogDataImporterWithActiveRecordImport.import! para la version optimizada.

Ejemplo 1 El modo menos recomendado: el codigo procesa cada post de forma individual usando find_or_create_by para usuarios, posts y categorias. Problemas: explosion de consultas, sin transaccion, performance pobre, comprobaciones repetidas y sin proteccion ante fallos. En mis pruebas este enfoque tardo alrededor de 38.43 segundos para 10000 registros.

Razon principal para evitarlo: por cada registro se hacen multiples queries a la base y se realizan operaciones redundantes que disparan el tiempo de ejecucion y la carga en el servidor.

Ejemplo 2 Enfoque razonable: usar transaccion, extraer datos unicos antes de insertar, usar insert_all para insertar categorias y usuarios en lote, y construir hashes de lookup mediante Category.all.pluck name, id to_h y User.all.pluck email, id to_h. Esto reduce enormemente las consultas y convierte busquedas O n en accesos O 1. En mi prueba este enfoque tardo alrededor de 15 segundos.

Concepto clave: los hashes de lookup son oro para rendimiento. En vez de buscar la categoria por cada post se hace una query unica y se accede por clave, evitando miles de consultas redundantes.

Ejemplo 3 Enfoque optimizado con activerecord-import: añadir la gem activerecord-import al Gemfile y opcionalmente pg para Postgres. Este metodo crea objetos en memoria en batches, realiza importaciones masivas con import o import_all y aprovecha opciones como on_duplicate_key_ignore, on_duplicate_key_update y validate false para maximizar velocidad. Ademas se procesan los posts en grupos de por ejemplo 1000 para controlar memoria y luego se crean las relaciones post categoria tambien en batches. Resultado en mi test: alrededor de 5 segundos para 10000 registros.

Por que activerecord-import es tan potente: genera INSERTs SQL optimizados con multiples VALUES, reduce round trips a la base, permite gestionar memoria con batch_size y ofrece flexibilidad para upserts y opciones de validacion.

Comparacion de rendimiento en un equipo Apple M3 Pro con 18GB RAM: BadImporter aproximadamente 40 segundos; BlogDataImporter aproximadamente 15 segundos; BlogDataImporterWithActiveRecordImport aproximadamente 5 segundos. En VPS modestos los tiempos pueden aumentar 3 o 4 veces pero la proporcion de mejora se mantiene.

Buenas practicas resumidas: usar transacciones para garantizar atomicidad, preferir insert_all o activerecord-import para inserciones en masa, construir hashes de lookup para evitar consultas por registro, procesar y deduplicar datos antes de insertar y utilizar batches para controlar uso de memoria.

Si trabajas con volúmenes mayores como 100000 o 1000000 de registros, deberias valorar procesado paralelo, colas con Sidekiq o ActiveJob, y herramientas especificas de ingestion en masa.

Sobre Q2BSTUDIO: Q2BSTUDIO es una empresa de desarrollo de software especializada en aplicaciones a medida y software a medida. Ofrecemos servicios de consultoria y desarrollos personalizados, soluciones de inteligencia artificial e ia para empresas, agentes IA, integraciones de Power BI y servicios inteligencia de negocio. Tambien somos expertos en ciberseguridad y gestion de infraestructuras cloud con servicios cloud aws y azure. Nuestro equipo combina experiencia en desarrollo backend y frontend con conocimientos avanzados en inteligencia artificial, analitica de datos y seguridad para ofrecer soluciones robustas y escalables.

Palabras clave y servicios destacados: aplicaciones a medida, software a medida, inteligencia artificial, ia para empresas, agentes IA, power bi, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, desarrollos personalizados.

Si te interesa que preparemos contenido adicional podemos cubrir: estrategias avanzadas con la gem activerecord-import, migraciones y alteraciones de columnas en bases de datos con millones de registros, casos reales con Kafka o SQS para procesamiento asincrono, y otras tecnicas de optimizacion de bases de datos.

Te invitamos a probar las tres variantes en tu entorno, comparar tiempos y elegir la que mejor se adapte a tus necesidades. Si necesitas ayuda implementando procesos de importacion a medida, optimizaciones de rendimiento, soluciones de inteligencia artificial, ciberseguridad o migracion a la nube con servicios cloud aws y azure contacta a Q2BSTUDIO para una consultoria especializada.

Si te ha parecido util este articulo deja un like y comparte con otros desarrolladores Rails. Comenta que tema te gustaria ver a continuacion y prepararemos el contenido.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.