[pgsql-jp: 41168] Re: ご教授お願いします

takart32 @ yahoo.co.jp takart32 @ yahoo.co.jp
2012年 8月 7日 (火) 15:58:22 JST


さいとうさん

こんにちは。回答くださりありがとうございます。

やはり初期化を行うには『''』を格納する方法しかないのですね。

現行のJavaロジックが以下の処理方式で作られているので、empty_blob
の代替関数があれば、プログラムをほぼ修正せずにいけると思ったのですが残念です。

(1)新規レコードをinsertする。insert時にBLOBカラムは、empty_blob()関数で初期化する。
(2)insertした新規レコードを、for update句を使用して、ロックを取得してselectする。
(3)selectしたBLOBカラムのロケータから、BinaryOutputStreamを取得する。
(4)取得したBLOBオブジェクトのOutputStreamをZip形式でinsertするので、ZipOutputStreamを作成。
(5)ZipOutputStreamをObjectOutputStreamでラップする。
(6)writeObjectでDBに書き込みを行う。

どういった処理方式でいけるかこれから検討してみます。




--- On Tue, 2012/8/7, take <saitoh_takeshi @ ics.co.jp> wrote:

> さいとうです。
> 
> insert into ... (..., bin) values (..., ''); でどうでしょうか。
> 
> わたしのところではJavaアプリケーションで、こうしています。
> 
> 
> $ psql
> 
> # create table hoge2(id text, bin bytea);
> CREATE TABLE
> 
> # insert into hoge2 values ('aa', '202122');
> INSERT 0 1
> 
> # select id, encode(bin, 'hex') from hoge2;
>  id |    encode    
> ----+--------------
>  aa | 323032313232
> (1 row)
> 
> # insert into hoge2 values ('aa', '');
> INSERT 0 1
> # select id, encode(bin, 'hex') from hoge2;
>  id |    encode    
> ----+--------------
>  aa | 323032313232
>  aa | 
> (2 rows)
> 
> # insert into hoge2 values ('aa', 'ABC');
> INSERT 0 1
> # select id, encode(bin, 'hex') from hoge2;
>  id |    encode    
> ----+--------------
>  aa | 323032313232
>  aa | 
>  aa | 414243
> (3 rows)
> 
> # update hoge2 set bin = '';
> UPDATE 3
> # select id, encode(bin, 'hex') from hoge2;
>  id | encode 
> ----+--------
>  aa | 
>  aa | 
>  aa | 
> (3 rows)
> 
> 
> 
> At Tue, 7 Aug 2012 10:34:36 +0900 (JST),
> <takart32 @ yahoo.co.jp> wrote:
> > 
> > こんにちは 高橋といいます。
> > 
> > postgresのバイナリデータについて質問があります。
> > 
> > Oracleでいうempty_blob関数のようなバイナリデータを
> > 初期化する関数はありますでしょうか?
> > データ型はBytea型を使用しています。
> > 
> > 補足
> > Oracle→PPASへの移行を実施中。Javaアプリの中でINSERTのSQL文を発行しており、
> > その中でBlobデータの初期化(empty_blob)を行っている。
> > データの書き込みはストリームを使用して行っている。
> > 現行ロジックから、極力修正を行わない方針でいきたいので、empty_blobと同様
> > の関数があるのであれば使用したい。
> > 
> > 
> > 色々調べたのですが、それらしい物が見つからずご教授をよろしくお願いします。
> > 
> 


pgsql-jp メーリングリストの案内