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

テストのために、以下に示すように、リテラル16 進バイト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 に答える