Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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:

Código SQL [-]
insert into tbInformes values (123, 'Título del informe', blob_load('Extractos.rep'), current_timestamp);

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
Responder Con Cita
  #2  
Antiguo 30-05-2011
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
No tengo tiempo, para mirarlo, pero echalo un ojo por si te puede servir de base.
Código SQL [-]
               BLOB Reading Example (C#)             

                                                TEST.SQL Script (Testing Database)

 Run the following script to create the testing database. It creates a simple table called MYTABLE with a single row. (How to create a database from an SQL script):
CREATE TABLE MYTABLE (     ID   INTEGER,     VAL  BLOB SUB_TYPE 0 SEGMENT SIZE 80 ); Reading values

 Because it is not possible to insert binary BLOB value in the SQL script we need to insert it in the code before reading.
 The following sample prints the values from the column "VAL" to console:
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]);     }   } } 


             
                            
             Copyright © 2005 - 2007 DotNetFirebird
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 30-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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]);
        }
    }
}
El caso es que dice esto:

Cita:
Because it is not possible to insert binary BLOB value in the SQL script we need to insert it in the code before reading.
El ejemplo, la verdad, es que no lo entiendo, y parece que no es lo que ando buscando.
Responder Con Cita
  #4  
Antiguo 30-05-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #5  
Antiguo 31-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.107
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿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.
Responder Con Cita
  #6  
Antiguo 31-05-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
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).
Responder Con Cita
  #7  
Antiguo 31-05-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
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.
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).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 21:44:17.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi