none
Cargar imágenes en tabla RRS feed

  • Pregunta

  • Buenas tardes!, tengo una tabla donde guardo los empleados y le hice un campo tipo image para guardar la foto. Ahora a modo de ejemplo descargue algunas fotos de Internet (tipo jpg y png) para cargarlas en la tabla. Estas fotos las tengo guardadas en el escritorio de mi pc.

    Como hago para insertarlas desde el sql server management studio con una istrucion insert pero como le indico que la foto esta en tal ruta y que la debe cargar?

    Intente hacer esto pero me sale error

    INSERT INTO tSjEmple (Foto) 
    --WHERE CodigEmple = '0001'
    SELECT v FROM OPENROWSET('C:\Users\Jeremias\Desktop\Empleados\20728741.PNG'

    Saludos y gracias


    J.M. Analista de Sistemas

    viernes, 29 de noviembre de 2013 19:40

Respuestas

  • Primero, asegurate que la instancia a la que estas conectado sea el mismo equipo donde se encuentra ese archivo.

    Despues, realiza el siguiente codigo de ejemplo para verificar el nombre de la columna sea BulkColumn, de no ser así se lo cambias en el query de más abajo:

    SELECT '0001' as ident, *
    	FROM
    	OPENROWSET(BULK 'C:\Users\Jeremias\Desktop\Empleados\279078742_39417fd7a5.jpg', SINGLE_BLOB) AS T1


    Esta mal tu sintaxis, trata algo así:

    UPDATE t 
    SET T.Foto = tImagen.BulkColumn  
    FROM 
    	(
    	SELECT '0001' as ident, *
    	FROM
    	OPENROWSET(BULK 'C:\Users\Jeremias\Desktop\Empleados\279078742_39417fd7a5.jpg', SINGLE_BLOB) AS T1 
    	) as tImagen
    	INNER JOIN tSjEmple t 
    	ON t.CodigEmple = tImagen.ident
    



    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    viernes, 29 de noviembre de 2013 20:19
  • Hola.

    El error es debido a que la ruta que estás poniendo es local de tu máquina, y debes poner una ruta que vea el servidor. Así que bien lo copias al servidor y desde allí lo referencias, o bien pones una ruta UNC (algo del tipo "\\TuMaquina\C$\Users\...").


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    domingo, 8 de diciembre de 2013 18:16
    Moderador

Todas las respuestas

  • Hola que tal JM

    Te dejo unas ligas donde yo y algunos otros colaboradores del foro hemos respondido algo similar, si sigues teniendo dudas, con gusto te apoyamos.

    Cargar una imagen en SQL Server 2005

    SALUDOS!


    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    viernes, 29 de noviembre de 2013 19:51
  • Estoy intentando hacer una actualización porque a los datos ya los tengo cargados. Hago lo siquiente:

    UPDATE tSjEmple SET Foto =
    T1 FROM OPENROWSET(BULK 'C:\Users\Jeremias\Desktop\Empleados\279078742_39417fd7a5.jpg', SINGLE_BLOB) AS T1 
    WHERE CodigEmple = '0001'

    Pero me sale este error: No se puede realizar la carga masiva. El archivo "C:\Users\Jeremias\Desktop\Empleados\279078742_39417fd7a5.jpg" no se puede abrir. Código de error del sistema operativo: 3(failed to retrieve text for this error. Reason: 15105).

    La ruta es correcta.


    J.M. Analista de Sistemas

    viernes, 29 de noviembre de 2013 20:03
  • Primero, asegurate que la instancia a la que estas conectado sea el mismo equipo donde se encuentra ese archivo.

    Despues, realiza el siguiente codigo de ejemplo para verificar el nombre de la columna sea BulkColumn, de no ser así se lo cambias en el query de más abajo:

    SELECT '0001' as ident, *
    	FROM
    	OPENROWSET(BULK 'C:\Users\Jeremias\Desktop\Empleados\279078742_39417fd7a5.jpg', SINGLE_BLOB) AS T1


    Esta mal tu sintaxis, trata algo así:

    UPDATE t 
    SET T.Foto = tImagen.BulkColumn  
    FROM 
    	(
    	SELECT '0001' as ident, *
    	FROM
    	OPENROWSET(BULK 'C:\Users\Jeremias\Desktop\Empleados\279078742_39417fd7a5.jpg', SINGLE_BLOB) AS T1 
    	) as tImagen
    	INNER JOIN tSjEmple t 
    	ON t.CodigEmple = tImagen.ident
    



    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    viernes, 29 de noviembre de 2013 20:19
  • Me sigue dando el mismo error probe este código

    UPDATE tSjEmple 
    SET Foto = tImagen.BulkColumn  
    FROM 
    (
    SELECT '0001' as ident, *
    FROM
    OPENROWSET(BULK 'C:\Users\Jeremias\Desktop\Empleados\279078742_39417fd7a5.jpg', SINGLE_BLOB) AS T1 
    ) as tImagen
    INNER JOIN tSjEmple t 
    ON t.CodigEmple = tImagen.ident

    Me sale el sig error:

    Mens. 4861, Nivel 16, Estado 1, Línea 1
    No se puede realizar la carga masiva. El archivo "C:\Users\Jeremias\Desktop\Empleados\279078742_39417fd7a5.jpg" no se puede abrir. Código de error del sistema operativo: 3(failed to retrieve text for this error. Reason: 15105)

    Pero la instancia a la que estoy conectado esta en otra maquina de la red y la imagen esta en mi maquina ese debe ser el problema. Tendría que poner la ruta de la red?



    J.M. Analista de Sistemas

    viernes, 29 de noviembre de 2013 20:25
  • Nunca he cargado imágenes en red con OPENROWSET hacia una tabla, puedes toparte con algunos otros problemas como permisos de usuarios, etc etc... Siempre las he hecho de manera local, yo sugeriría que esa imagen la enviaras al equipo donde se encuentra tu BD y ahí utilizaras el query que te proporcione.

    :)


    Sergio Sánchez Arias
    Oaxaca,México
    AYÚDANOS A AYUDARTE

    viernes, 29 de noviembre de 2013 20:31
  • Hola.

    El error es debido a que la ruta que estás poniendo es local de tu máquina, y debes poner una ruta que vea el servidor. Así que bien lo copias al servidor y desde allí lo referencias, o bien pones una ruta UNC (algo del tipo "\\TuMaquina\C$\Users\...").


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.com
    Sígueme en twitter en http://twitter.com/qwalgrande

    domingo, 8 de diciembre de 2013 18:16
    Moderador