Gracias, paso una función de Postgres que regenera las tablas de imágenes en función del contenido de la tabla fllarge.
CREATE OR REPLACE FUNCTION axfunc_ReconstruirImagenesDesdeFLlarge(IN tablename varchar, IN borrar boolean) returns void AS
$BODY$
declare
param_tablename ALIAS FOR $1;
param_borrar ALIAS FOR $2;
reg_fllarge fllarge%rowtype;
sql1 varchar;
sql2 varchar;
tabla varchar;
begin
-- Montamos SQL para lista de tablas a traspasar
IF (param_tablename = '' OR param_tablename IS NULL) THEN
sql1 := 'SELECT DISTINCT SUBSTR(refkey, 4, POSITION(''@'' IN SUBSTR(refkey, 4, LENGTH(refkey)))-1) FROM fllarge';
ELSE
sql1 := 'SELECT '''||param_tablename||'''';
END IF;
-- Bucle principal de traspaso de datos para cada tabla
FOR tabla IN EXECUTE sql1 LOOP
-- Creamos la tabla si no existe
IF NOT EXISTS(SELECT 1 FROM information_schema.tables WHERE table_catalog = CURRENT_CATALOG AND table_schema = CURRENT_SCHEMA AND table_name = 'fllarge_'||tabla) THEN
sql2 := 'CREATE TABLE fllarge_'||tabla||'(refkey character varying(100) NOT NULL, sha character varying(50), contenido text, CONSTRAINT fllarge_'||tabla||'_pkey PRIMARY KEY (refkey))';
EXECUTE sql2;
end if;
-- traspasamos sus imagenes y las borramos de origen si nos lo han pedido
sql2 := 'INSERT INTO fllarge_'||tabla||'(refkey, contenido, sha)';
sql2 := sql2 || ' SELECT refkey, contenido, sha1';
sql2 := sql2 || ' FROM fllarge';
sql2 := sql2 || ' WHERE refkey LIKE ''RK@'||tabla||'@%''';
EXECUTE sql2;
IF (param_borrar = True) THEN
sql2 := 'DELETE FROM fllarge WHERE refkey LIKE ''RK@'||tabla||'@%''';
EXECUTE sql2;
END IF;
END LOOP;
end; $BODY$
language 'plpgsql';