(SOLUCIONADO) Migración de bienes con imágenes en diaguita

buenas dias, en esta ocasión me encuentro haciendo la migración de bienes (que en mi institución aun los tenemos en excel) dentro de la cual me surgió la duda en cuanto al tratamiento de las imágenes, estoy trabajando con la versión 2.1.2, querría saber si hay algun instructivo para ingresar las imágenes en la base que me indique formatos, tamaño, etc. que se requiera tener en cuenta, ya que estoy haciendo una migración masiva desde el excel a la base.

muchísimas gracias por la colaboración.

Hola Merybe,

Respecto a instructivo imágenes a la BD no tenemos aún, pero desde ya te recomendaría que el formato de imagen sea png o jpg, y en cuanto al tamaño que no exceda el tamaño hd (1280 pxl) para que no ocupen demasiado espacio en la BD.

En el documento excel que tenes cargados los bienes patrimoniales a migrar masivamente también estás guardando las imágenes, o las imágenes las guardas como archivos en un directorio?., Si están afuera del excel te recomendaría que dividas tu migración en 2 partes:
-1 Migración de los BP desde el archivo excel a la bd (sin las imágenes)
-2 Insertar las imágenes en la BD de diaguita, y actualizar todos los BP para asociarlos a su imagen correspondiente.

La recomendación de dividirlo en dos partes es porque para el paso 1, con convertir el archivo excel a un formato csv ya estarías en condiciones de hacer los inserts en la BD y es relativamente sencillo, y el paso 2 que refiere a incorporar las imágenes, me parece que si o si deberías generar un proceso en vía php lo que implica mayor costo de desarrollo y puesta a punto.

Comentanos por favor como pensas hacer la migración de los bienes y sus imágenes, y vamos ampliando el nivel de detalle :wink:

Saludos,
Fernando.

buenos dias fernando, con respecto a tu pregunta,

“En el documento excel que tenes cargados los bienes patrimoniales a migrar masivamente también estás guardando las imágenes, o las imágenes las guardas como archivos en un directorio?.”
(perdon no he logrado entender aun para marcarlo como una cita. ja.)

en mi doc. excel tengo cargados ademas de los BP sus respectivas fotos png. es por ello mi pregunta, para saber si debo antes cargar las imagenes en la tabla “Imagenes” de la BD, y luego colocar los id correspondientes a cada bien?
voy a probar con algunas opciones y les estaré comentando. Por el momento haré solo la migracion de los BP SIN las imagenes, y luego vere de tratar de relacionar a las imagenes con su respectivo bien.

si alguno ha tenido este inconveniente, su comentario es bienvenido.

saludos y muchas gracias.

Hola Merybe,

si debo antes cargar las imagenes en la tabla "Imagenes" de la BD, y luego colocar los id correspondientes a cada bien?
Efectivamente cuando quieras cargar las imágenes a la BD de diaguita para vincularla a los BP, primero se tiene que cargar la imagen en la tabla scp_imagenes, y luego asociar el id_imagen al bp correspondiente.
Por el momento haré solo la migracion de los BP SIN las imagenes, y luego vere de tratar de relacionar a las imagenes con su respectivo bien.
Después de haber insertado los BP SIN la vinculación a la imágen, podés preparar un método php que recorra todos los registros de tu archivo excel y: -1 Inserte en la tabla scp_imagenes la imagen de un bp -2 Ejecute un update sobre la tabla de BP, vinculando el campo id_imagen a la imagen recién creada, en base a un campo de identificación que debería ser único como numero_patrimonial

Un pseudo código de este proceso sería:


$bienes_patrimoniales = $excel->get_filas();
foreach($bienes_patrimoniales as $bp){

   //En este caso está leyendo la img de un archivo, habría que ver como bajar la imagen del excel a un archivo para tomarlo o si se puede recuperar el binario de la imagen desde el excel.
   $data_img = file_get_contents('nombreImagen.png');  

   // Escapar la imagen binaria
   $imagen_binaria = pg_escape_bytea($data_img);
   $sql_imagen = "INSERT INTO diaguita.scp_imagenes (nombre_imagen, imagen) VALUES ( '{$bp['nombre_imagen']}' ,   $imagen_binaria ); \n";

   //Inserto la imagen y recupero su id
   $id_imagen = toba::db(null)->ejecutar($sql_imagen);

   //Realizo el update para vincular el BP con la imagen recién creada en base al campo numero_patrimonial
   $sql_bp = "update diaguita.scp_bienes_patrimoniales set id_imagen = $id_imagen where numero_patrimonial = '{$bp['numero_patrimonial']}'  ";
   toba::db(null)->ejecutar($sql_bp);
}

Por favor tomalo únicamente como pseudo código, pero con una lógica similar a esa debería funcionar bien tu proceso, siempre suponiendo que previamente ya tenés insertado los bienes en la BD, sino sería cambiar el $sql_bp que está ejecutando un update, por un insert con toooodos los campos que tengas a tu disposición para migrar :slight_smile:

Cualquier cosa avisanos por favor

Saludos,
Fernando.

buenos dias, he retomado el trabajo de migración que habia planteado y he realizado la carga de datos en la Base sin ningun problema, ahora bien al momento de realizar una nueva carga desde el sistema me da el siguiente error ,“se ha producido una violacion de la restriccion impuesta por un indice unico o una restriccion de unicidad”(muestro en imagen). por lo que no me deja realizar una nueva alta de bienes, he migrado cerca de 3000 bienes a la base.

desde ya muchas gracias. saludos.


IMG-2.jpg

IMG-2.png

Hola!

¿Podría adjuntar el archivo de log sistema.log ubicado en instalacion/i__produccion/p__diaguita/logs para ver el error que está sucediendo? Se debe tratar de una columna nueva en la tabla de BP y que falta proporcionar en el script de migración (al menos con un valor por defecto).

Saludos

Buenos Días Sergio! ayer he logrado que realice la carga modificando la secuencia de indexado de la tabla scp_bienes_patrimoniales, como yo había migrado cerca de 3000 bienes el contador había quedado en la ultima numeración antes de la migración, por lo que no me permitía cargar otros bienes ya que le asignaba un id que ya estaba usado, solo inicie nuevamente el contador de la secuencia a partir del siguiente numero del ultimo usado. hasta ahora no me ha dado ningún problema luego de haber hecho esto.
Lo único que ha quedado es el contador de filas afectadas, que no se ha actualizado luego de la migración mantiene el numero anterior a la migra.

Perfecto Meribé. Si actualizan el contador o secuencia manualmente, no habría inconveniente. Así luego no les provoca nuevos errores al intentar generar desde el el sistema nuevos bienes.

Saludos!