- PR -

DBへのファイル入出力について

投稿者投稿内容
ムック
会議室デビュー日: 2007/12/06
投稿数: 4
投稿日時: 2007-12-06 17:28
現在,DBへファイル入出力を行おうとしています.DBにbytea型でテーブルを作り,
そこにファイルシステム上のファイルを保存及び取り出しを行う予定です.

(イメージ)
ファイル⇒DB⇒ファイル

おそらく,ファイルをバイナリストリーム等へ変換し,入出力を行うのでしょう
が,その辺りについてイメージが沸かない為,どなたかご教授お願いします.
取り扱うファイルはテキストファイル以外を含みますので,Reader,Writerは用いな
いという条件でお願いします(バイナリをStringへ変換という手法がある場合は,
そちらでも結構です).

※このようなことが推奨されない事は分かっていますが,現在開発中のシステムの
性質上,不可欠な手法ですので,どうかご理解頂けますようお願いします.
kouichi
会議室デビュー日: 2003/01/04
投稿数: 17
投稿日時: 2007-12-06 19:05
JDBCで直でいじるんですか?
何らかのO/Rマッピングを利用するのでしょうか?
このあたりで回答が変ってくるともいます。

>(バイナリをStringへ変換という手法がある場合は,そちらでも結構です).

メールの要領でMIMEエンコードしてしまえばバイナリをStringにできます。
Base64エンコードとかなら簡単にエンコードできて復元も問題ないと思いますよ。
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2007-12-06 19:40
具体的な環境がわかりませんが
JDBCでのLONGVARBINARY
ORACLEでいうLONG RAWとか使えばいいのではないですか。
テキストに変換したりしなくていいですよ。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2007-12-06 21:29
オラクルなら ファイルその物を放り込むことができます(バージョンにもよる)
データベース系の話ならDB名を明記したほうが汎用的に扱いたいのであれば
そのように記述したほうがいいです。
ほったて
ベテラン
会議室デビュー日: 2007/11/10
投稿数: 68
投稿日時: 2007-12-06 22:48
BLOB でどうでしょうか?
ムック
会議室デビュー日: 2007/12/06
投稿数: 4
投稿日時: 2007-12-07 03:28
皆様ご意見有難うございます。
フリー環境での開発を行っており、PostgreSQL・JDBCでやろうと思っています。Oracleだと推測して返答下さった方々、申し訳ないです。

皆様総じてDBの型の方に注目されているようですので、DBの方の型から検討してみます。
今出ている分ではBLOB(bytea)か、LONGVARBINARYと言った感じですね。どちらがいいのでしょうか。
ムック
会議室デビュー日: 2007/12/06
投稿数: 4
投稿日時: 2007-12-07 03:35
すいません、変な解釈をしていたようです。

LONGVARBINARYというのが初耳だったので、少し戸惑ってしまいました。
結局Postgresではbytea型でいけそうだということみたいですね。
ムック
会議室デビュー日: 2007/12/06
投稿数: 4
投稿日時: 2007-12-07 22:55
ご指摘有難うございます。無事解決致しました。

・bytea型でDB構成
・格納はbinaryStreamを、PreparedStatementを用いてSQL文にし、発行
・取得はgetBinaryStream()を用いる

以上の事で、今回の機能は実装できました。特に2項目は知らない方もいるのではと思い、挙げてみました(自分はずっとStatementだけを用いていました)。
皆様有難うございました。

スキルアップ/キャリアアップ(JOB@IT)