Télefono:
91 626 61 20
Dirección:
C/ Copenhague 6. Edificio Al Andalus. Planta 2ª. Oficina 5. 28232. Las Rozas. Madrid
Es posible que en nuestro gestor Informix dispongamos de tipos de datos BLOB o CLOB. Éstos residen en sbspaces y nos podemos ver en la situación en la cual necesitamos que los datos no estén en un sbspaces concreto sino en otro.
Cambiar la clausula PUT de la definición de la tabla no moverá las datos existentes y afectará únicamente a los datos que se inserten a continuación. De igual forma, realizar un update de la forma:
UPDATE tabla_destino SET columna_destino_sblob = (SELECT columna_origen_sblob FROM tabla_origen)
no moverá ningún sblob y lo único que hará será copiar la referencia sin mover el objeto.
La primara solución sería descargar los registros y volver a cargarlos cambiando la estructura de la tabla pero esta opción puede ser costosa y tener un tiempo sin servicio demasido alto. En luga de esto podemos utilizar la función LOCOPY.
La función LOCOPY tiene dos formas de utilizarse. En la primera es simplemente: LOCOPY(sblob_origen). Con esta opción se utiliza el sbspace por defecto, tal y como esté configurado en SBSPACENAME) y las características por defecto la el nuevo sblob.
La segunda opción es utilizar la forma: LOCOPY(sblob_origen,’tabla’,’columna’). Con esta opción se utilizará la definición de la columna para guardar el sblob.
Por ejemplo, podemos cambiar la clausula PUT de la definición de la tabla y luego actualizar el campo sblob para mover el dato a la nueva ubicación:
UPDATE tabla SET columna_sblob = LOCOPY(columna_sblob,’tabla’,’columna_sblob’) WHERE …
Esta opción nos permite ir moviendo los sblob poco a poco por medio de los filtros que podemos establecer en el WHERE y así no sobrecargar el gestor.