35

我有一个 H2 数据库(http://www.h2database.com),我想通过一个简单的 sql 脚本将一个文件插入到 BLOB 字段中(例如,填充一个测试数据库)。我知道如何通过代码做到这一点,但我找不到如何执行 sql 脚本本身。

我试图通过路径,即

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

但这失败了。

在代码中(例如 java),很容易创建一个 File 对象并将其传入,但直接从 sql 脚本中,我被卡住了......

任何的想法?

4

2 回答 2

43

为了测试,您可以插入文字十六进制字节或使用该RAWTOHEX(string)函数,如下所示。

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

附录:对于BLOB从文件加载字段,FILE_READ(fileNameString)可能是一个有用的替代方案。

insert into a values(3, FILE_READ('file.dat'));
于 2010-04-09T17:42:40.070 回答
5

不是 h2database,但可能会有所帮助;https://blog.jerrynixon.com/2009/03/tsql-to-insert-imageblog.html

链接博客文章中的示例代码,如果链接再次断开:

CREATE TABLE MyTable 
    (id int, image varbinary(max))

INSERT INTO MyTable
    SELECT      1
        ,(SELECT * FROM OPENROWSET(
            BULK 'C:\file.bmp', SINGLE_BLOB) as x )
于 2010-04-09T13:58:41.973 回答