Problema.-
Necesitamos cargar unos 70 mil registros en promedio, pero hacer un bucle insertando esa cantidad de registros en un poco lento. Lo ideal es igualar al tradicional LOAD FROM [archivo] INSERT INTO [Tabla] pero es imposible.
Solucion tomada (seguro que hay otras pero esta nos sirvio)
Herramientas
- Desde un programa windows podemos ejecutar un procedimiento almacenado :D
- Desde un procedimiento almacenado NO se puede ejecutar el LOAD :(
- Desde un procedimiento almacenado Se puede correr comandos del sistema :D
- Tanto el ISQL como es DBACCESS puedes ejecutar instrucciones sql que se encuentren en un archivo :D
se creo un procedimiento + o - asi
create procedure CargarDatos()
SYSTEM ' dbaccess [base de datos] [Archivo.sql]
end procedure
y el archivo Datos.sql contiene
load from datos.unl insert into [tabla]
SEGURIDAD
mmmmmmmm Pues Sí Estamos dejando un agujero muy grande de seguridad, imaginense si en vez de load cambian el contenido del archivo sql y ponen un drop database uuuuuyyyyyyy eso si doleria.
pues tiene que tener mucho cuidado y quitar los permisos de escritura en ese archivo y dejarlo en solo lectura
chmod 444 Datos.sql
que nadie lo modifique ni siquiera el dueño también serviría la seguridad de base de datos para q solo el usuario que ejecute este proc tenga permisos solo en la tabla afectada.
salu2