2010-04-09 37 views
25

Tôi có cơ sở dữ liệu H2 (http://www.h2database.com) và tôi muốn chèn tệp vào trường BLOB thông qua một tập lệnh sql đơn giản đơn giản (để điền một cơ sở dữ liệu thử nghiệm). Tôi biết làm thế nào để làm điều đó thông qua mã nhưng tôi không thể tìm thấy làm thế nào để làm kịch bản sql chính nó.chèn BLOB qua tập lệnh sql?

tôi đã cố gắng để vượt qua những con đường, ví dụ:

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

nhưng điều này thất bại.

Trong mã (java ví dụ), thật dễ dàng để tạo ra một đối tượng tập tin và thông qua đó, nhưng trực tiếp từ một kịch bản sql, tôi bị mắc kẹt ...

Bất kỳ ý tưởng?

David

Trả lời

32

Để thử nghiệm, bạn có thể chèn chữ số hex bytes hoặc sử dụng hàm RAWTOHEX(string), như được hiển thị bên dưới.

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 

Phụ Lục: Đối với tải BLOB lĩnh vực từ một tập tin, FILE_READ(fileNameString) có thể là một lựa chọn hữu ích.

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

trông giống như một chức năng rất hữu ích để thử nghiệm thực sự! cảm ơn gợi ý – dm76

+3

@ David Michel: Tôi đã bỏ qua bản chất của câu hỏi của bạn; có vẻ như bạn muốn 'FILE_READ', được thêm ở trên. – trashgod

+0

thực sự, đó là chính xác những gì tôi muốn. chúc mừng! – dm76

Các vấn đề liên quan