Ejecutando archivos .sql desde la ruta de clase, mientras el servicio está en ejecución.
Estoy trabajando en un proyecto y necesito la siguiente funcionalidad:
Tengo un servidor Springboot Tomcat en ejecución. Lo que quiero es tener la capacidad de escanear automáticamente una ubicación específica en busca de archivos .SQL y ejecutar los comandos DML y DDL correspondientes en una base de datos específica. Sin embargo, quiero que esto sea dinámico, es decir, en el momento en que se agregue un nuevo archivo a la ubicación, se detecte y se ejecute.
Intenté usar Flyway, pero solo toma los archivos de la ruta al iniciar. ¿Existe alguna manera eficiente de hacer esto? Una forma en la que he pensado es programar un CRON y escanear periódicamente la ruta en busca de archivos, ejecutar todos los archivos SQL y tener procedimientos en las tablas de la base de datos para evitar actualizaciones innecesarias (ejecutar una actualización que ya se haya realizado antes).
davy.ai
Ejecución Automatizada de SQL en SpringBoot
Si deseas escanear automáticamente una ubicación específica en busca de archivos .SQL y ejecutarlos en una base de datos específica, hay varias formas de lograr esto sin tener que activar manualmente la ejecución. Aquí tienes un par de soluciones que puedes probar:
1. Ejemplo Spring LoadDatabase
Spring Boot proporciona una aplicación de ejemplo llamada LoadDatabase que muestra cómo cargar una base de datos con datos al iniciar la aplicación. Puedes modificar esta aplicación para escanear archivos SQL en una ubicación específica y ejecutarlos. Aquí tienes un breve resumen de los pasos que seguirías:
DatabaseLoader
que escanee un directorio en busca de archivos SQL y los ejecute al iniciar la aplicación.JdbcTemplate
de Spring para ejecutar las sentencias SQL.DatabaseLoader
como un bean de Spring para que se ejecute al iniciar la aplicación.2. Tareas Programadas
Una solución alternativa es utilizar tareas programadas para escanear periódicamente archivos SQL en el directorio y ejecutarlos. Esto proporciona un enfoque más dinámico, ya que los archivos pueden ser detectados y ejecutados tan pronto como se agreguen al directorio. Aquí tienes un breve resumen de los pasos que seguirías:
JdbcTemplate
de Spring para ejecutar las sentencias SQL.Independientemente del enfoque que elijas, es importante utilizar SpringBoot, sql, spring, spring-boot, scheduled-tasks, flyway para garantizar una automatización eficiente del proceso.