2010-04-09 14 views
25

Bir H2 veritabanı (http://www.h2database.com) var ve bir düz basit sql komut dosyası (örneğin bir sınama veritabanını doldurmak için) bir BLOB alanına bir dosya eklemek istiyorum. Bunu kod aracılığıyla nasıl yapacağımı biliyorum ama sql betiğinin kendisinin nasıl yapılacağını bulamıyorum. bir sql komut dosyasını kullanarak bir BLOB ekle?

I yani

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

ancak bu başarısız yolu geçmek için çalışılmıştır. kod (örneğin java) içinde

, bu

herhangi bir fikir ... sıkıştım, bir dosya nesnesi oluşturmak ve bu geçmek kolaydır, ancak doğrudan bir sql komut dosyasından?

David

cevap

32

Test için, literal hex bytes'u ekleyebilir veya aşağıda gösterildiği gibi RAWTOHEX(string) işlevini kullanabilirsiniz.

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 

Zeyilname: bir dosyadan BLOB alanları yükleme için, FILE_READ(fileNameString) yararlı bir alternatif olabilir. Bu TSQL özel görünüyor olsa da umut verici bakmak

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

gerçekten test için çok yararlı bir işlev gibi görünüyor görelim! ipucu için teşekkürler – dm76

+3

@David Michel: Sorunun özünü gözden kaçırdım; Yukarıda eklediğiniz 'FILE_READ'ü istediğiniz gibi görünüyor. – trashgod

+0

gerçekten de istediğim buydu. Şerefe! – dm76

İlgili konular