[pgsql-jp: 41169] Re: ご教授お願いします
Kazumasa Gotoh
kgotoh @ cic-kk.co.jp
2012年 8月 7日 (火) 16:12:01 JST
後藤と言います。
この辺りにはまったく詳しくないのですが、ちょっと検索すると
こんなのとかが出てきます。
http://miroslav.suchy.cz/spacewalk/gitstat/commit-detail.php?commit=ad648496420396db183fa6433628ab17f8d9fd0b
http://www.redhat.com/archives/spacewalk-devel/2009-February/001490.html
リンク先の中身をロクにチェックしてないので適当な紹介になって
しまいますが、Migration の場合には「無ければ(自分で)作ってしまう」
というのも、ひとつの選択肢だと思います。
代替関数を用意するのと、元のプログラムをすべて書き換えるのと
どちらが手間か? という事になるでしょうけど。
From: <takart32 @ yahoo.co.jp>
Date: Tue, 7 Aug 2012 15:58:22 +0900 (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 メーリングリストの案内