2010-04-09 108 views
25

Tengo una base de datos H2 (http://www.h2database.com) y me gustaría insertar un archivo en un campo BLOB a través de un simple script sql simple (para completar una base de datos de prueba, por ejemplo). Sé cómo hacerlo a través del código pero no puedo encontrar cómo hacer el script sql.inserta un BLOB mediante un script sql?

Me trataron de pasar el camino, es decir

INSERT INTO mytable (id,name,file) VALUES(1,'file.xml',/my/local/path/file.xml); 

pero esto no funciona.

Dentro del código (Java por ejemplo), es fácil crear un objeto File y pasar de que en, sino directamente de una secuencia de comandos SQL, estoy atascado ...

Alguna idea?

David

Respuesta

32

Para realizar pruebas, puede insertar literal hex bytes o utilizar la función RAWTOHEX(string), como se muestra a continuación.

create table a(id integer, item blob); 
insert into a values(1,'54455354'); 
insert into a values(2, RAWTOHEX('Test')); 
select UTF8TOSTRING(item) from a; 
TEST 
Test 

Adición: Para cargar BLOB campos de un archivo, FILE_READ(fileNameString) puede ser una alternativa útil.

insert into a values(3, FILE_READ('file.dat')); 
+0

se parece a una función muy útil para realizar pruebas de verdad! gracias por la pista – dm76

+3

@David Michel: pasé por alto la esencia de su pregunta; parece que quieres 'FILE_READ', agregado arriba. – trashgod

+0

de hecho, eso es exactamente lo que quería. ¡salud! – dm76