![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
script sql insert into (campo blob)
Hola, he estado buscando, y no he encontrado, algo que necesito hacer, no sé si la edad me nubla la mente o es el calor que hace, pero no lo consigo, me explico:
Lo necesito en un script sql donde se crea una base de datos, sus dominios, generadores, tablas, procedimentos almacenados, triggers y... datos predeterminados. Pues bien, en el script quiero insertar una serie de ficheros, son informes, y no encuentro la forma de hacerlo, sería algo así como:
El 'blob_load' sería lo que estoy buscando, suponiendo que exista algo así. También me valdría hacerlo mediante un 'store procedure'. Gracias por los consejos, que vuestro Dios os lo pague con mucha buena salud, que nunca os falte 50 euros en el bolsillo y que tengáis amor para dar y regalar ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#2
|
||||
|
||||
No tengo tiempo, para mirarlo, pero echalo un ojo por si te puede servir de base.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#3
|
||||
|
||||
Gracias
![]() Ha salido un poco "descuadrado", pero creo que es esto: Código:
string database = "test.fdb"; CreateEmbeddedDb(database, "test.sql"); FbConnectionStringBuilder csb = new FbConnectionStringBuilder(); csb.ServerType = 1; csb.Database = database; using (FbConnection c = new FbConnection(csb.ToString())) { c.Open(); FbCommand cmdInsert = new FbCommand("INSERT INTO mytable(id, val) VALUES(@id, @val)", c); cmdInsert.Parameters.Add("@id", 1); cmdInsert.Parameters.Add("@val", new byte[] {1, 2, 3}); cmdInsert.ExecuteNonQuery(); FbCommand cmd = new FbCommand("SELECT val FROM mytable", c); using (FbDataReader r = cmd.ExecuteReader()) { while (r.Read()) { int size = 20; byte[] bytes = new byte[size]; long count = r.GetBytes(0, 0, bytes, 0, size); for(int i = 0; i < count; i++) Console.WriteLine("Value: " + bytes[i]); } } } Cita:
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
Hola Casimiro.
Utilizando los scripts de IB-Experts puedes hacerlo tal y como propones. El problema es que después ese script solo lo va a reconocer el mismo IB-Expert o la utilidad de línea de comandos IBEscript.exe, también de ellos (esto último es lo que utilizo yo). La única alternativa que se me ocurre es que utilices una UDF de las que incorporan esta función blob_load (o similar). No me gusta depender de UDF's de terceros, pero no parece que haya muchas más soluciones. http://www.ibphoenix.com/download/tools/udf#59
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#5
|
||||
|
||||
¿Y cómo lo haces con los scripts de ibexpert?, realmente me viene bien porque es sólo para yo cargar los informes en la BD, no tienen que usarlo luego los clientes. Es para mí.
Porque meter UDFs no me fio, porque luego los servidores van siempre en distintos versiones de linux y vaya a encontrar algún problema inesperado.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#6
|
||||
|
||||
Aquí tienes un ejemplo en los scripts avanzados de IBExpert :
http://www.ibexpert.net/ibe/index.ph...sIntoADatabase SET BLOBFILE 'C:\f.jpg'; INSERT INTO ... VALUES (..., :h00000000_FFFFFFFF); SET BLOBFILE 'C:\f2.jpg'; INSERT INTO ... VALUES (..., :h00000000_FFFFFFFF); SET BLOBFILE 'C:\f3.jpg'; INSERT INTO ... VALUES (..., :h00000000_FFFFFFFF); Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#7
|
||||
|
||||
Te entiendo perfectamente, yo tampoco utilizo ninguna UDF de terceros (e incluso de las UDF's propias de Firebird, recurro a ellas lo mínimo posible, básicamente solo cuando hago procesos de importación de datos).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#8
|
||||
|
||||
Muchas gracias por la ayuda, lo he probado y aunque no da error alguno, sin embargo, no inserta el archivo, lo guarda como null. El resto de campos están bien, pero el blob está a null. No sé si será porque tengo una versión "personal" y esté limitado en ese aspecto, aunque no da error, ya digo.
También he probado a usar el otro método que viene en ese enlace que has puesto, el de ibeblock, y directamente me dice: "Nada que hacer", así sin más, sin errores ni nada. Sospecho que será por la versión.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#9
|
||||
|
||||
Cita:
Probablemente sea más bien un detalle de la localización del archivos, no sé si la dirección tiene que ser referenciada al equipo servidor Firebird o al cliente (aunque creo que es al cliente, el IBExpert o IBScript, que es el que conoce como manejar estas ampliaciones de scripts). Haz una prueba sencilla, con el IBEscript.exe, el fbclient.dll, y la base de datos, en la misma carpeta (en conexión local), y no marques ninguna ruta para el acceso al archivo a cargar, solo el nombre. Si esto funciona bien, entonces ya puedes seguir haciendo otras pruebas hasta identificar el direccionamiento correcto para los archivos a cargar. NOTA: Imagino que has puesto el código :h00000000_FFFFFFFF como valor del campo blob, tal y como marca el ejemplo. Esto le marca al script desde donde hasta donde tiene que cargar del archivo de datos (ya que puedes poner distintas secciones del mismo archivo en diferentes campos, algo que tampoco parece algo muy útil, la verdad).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). Última edición por guillotmarc fecha: 31-05-2011 a las 14:21:15. |
#10
|
||||
|
||||
Cita:
![]() Descargaré una versión de prueba y luego la quitaré.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
En la versión trial sí lo trae, lo he instalado y probado:
![]() Aparentemente todo bien, sin embargo: ![]() ¡¡¡nulo!!! ![]() Voy a tener que hacer un programita delphi para cargarlos, porque se trataba de ahorrar tiempo y finalmente estoy perdiendo más tiempo en estas pruebas que en hacer el programita ![]()
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
error insert con campo incremental | arefolio | SQL | 5 | 06-08-2008 12:46:02 |
Formatear BLOB en Insert | jlcasih | Firebird e Interbase | 1 | 10-05-2006 20:20:17 |
Problema con insert y campo float | Ivanzinho | SQL | 4 | 22-06-2005 10:07:22 |
campo blob | acertij022 | Conexión con bases de datos | 1 | 19-08-2004 00:10:32 |
![]() |
|