Hola a todos.
Bueno, el título me ha quedado muy largo pero bastante explícito de lo que busco. Quiero insertar un fichero cualquiera que no sea de fotos en una bd de firebird.
Para ello supongo que el campo apropiado es de tipo blob.
El tipo de fichero al que me refiero es por ejemplo cualquiera de office (.doc, .xls, etc.) un pdf u otro cualquiera. Digo que no sea de fotos porque en este hilo se explica muy bien cómo se hace para fotos y ese procedimiento no funciona con un pdf por ejemplo.
Ya sé que la base de datos va a crecer mucho y habrá que tener cuidado con las consultas, pero me interesa que los ficheros se inserten dentro de la bd para así vender un producto "todo en uno" donde el cliente no se preocupe de andar copiando muchos ficheros cuando quiera trasladar la bd a otro ordenador.
¿Se puede hacer? Si se puede ¿cómo lo hago?
Un saludo al foro.

Insertar un fichero cualquiera (no foto) en un campo blob de Firebird.
Started by
AngelF
, Nov 30 2010 12:01 PM
4 replies to this topic
#1
Posted 30 November 2010 - 12:01 PM
#2
Posted 30 November 2010 - 04:48 PM
#3
Posted 01 December 2010 - 04:14 AM
Gracias jdepaz. El artículo tiene buena pinta. Lo único es que es para bd ADO aunque supongo que valdrá igual para firebird.
Ya lo pruebo.
Un saludo.
Ya lo pruebo.
Un saludo.
#4
Posted 16 June 2011 - 05:50 PM
a ver amigo lo quieres en .net ado
para firebird para buscar el code y publicarlo
saludos
para firebird para buscar el code y publicarlo
saludos
#5
Posted 17 June 2011 - 03:21 AM
Solo necesitaras un campo de texto para el nombre de fichero (o al menos la extension) y un campo tipo blob para el fichero.
Para cargarlo, yo uso un FileStream de solo lectura para leer el fichero, y en el field solo uso un MyField.LoadFromStream(MyFileStream).
Por cierto, mi aplicacion usa esto continuamente, y las bases de datos en algunos clientes llegan a los 20 gigas y cosas asi, y puedo asegurarte que las consultas casi ni se enteran. Piensa que los cambos blob estan en tablas internas diferentes al resto de columnas, y un campo tipo blob, realmente en tu tabla se guarda como un varchar de 10, que contiene un puntero al contenido real del blob en esa tabla especial, por eso una consulta no te tarda nada mas por tener un blob de ficheros de 5 megas cada uno.
Yo puse toda la maquinaria de leer/guardar un fichero a un blob en unas funcioncitas/objetitos para que fuese posible volcar esos campos a una BD historica: Uso tabla+id del record como identificador del fichero en la BD historica (para poder recuperar el contenido si hace falta) y en el antiguo campo, vacio el blob y el nombre del fichero lo cambio a algo como "Archivado en BD historica", y cuando me piden abrir el fichero, si veo que el nombre es ese, pues le doy la mala noticia al pobre usuario.
Para cargarlo, yo uso un FileStream de solo lectura para leer el fichero, y en el field solo uso un MyField.LoadFromStream(MyFileStream).
Por cierto, mi aplicacion usa esto continuamente, y las bases de datos en algunos clientes llegan a los 20 gigas y cosas asi, y puedo asegurarte que las consultas casi ni se enteran. Piensa que los cambos blob estan en tablas internas diferentes al resto de columnas, y un campo tipo blob, realmente en tu tabla se guarda como un varchar de 10, que contiene un puntero al contenido real del blob en esa tabla especial, por eso una consulta no te tarda nada mas por tener un blob de ficheros de 5 megas cada uno.
Yo puse toda la maquinaria de leer/guardar un fichero a un blob en unas funcioncitas/objetitos para que fuese posible volcar esos campos a una BD historica: Uso tabla+id del record como identificador del fichero en la BD historica (para poder recuperar el contenido si hace falta) y en el antiguo campo, vacio el blob y el nombre del fichero lo cambio a algo como "Archivado en BD historica", y cuando me piden abrir el fichero, si veo que el nombre es ese, pues le doy la mala noticia al pobre usuario.