- - PR -
DBへのファイル入出力について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-12-06 17:28
現在,DBへファイル入出力を行おうとしています.DBにbytea型でテーブルを作り,
そこにファイルシステム上のファイルを保存及び取り出しを行う予定です. (イメージ) ファイル⇒DB⇒ファイル おそらく,ファイルをバイナリストリーム等へ変換し,入出力を行うのでしょう が,その辺りについてイメージが沸かない為,どなたかご教授お願いします. 取り扱うファイルはテキストファイル以外を含みますので,Reader,Writerは用いな いという条件でお願いします(バイナリをStringへ変換という手法がある場合は, そちらでも結構です). ※このようなことが推奨されない事は分かっていますが,現在開発中のシステムの 性質上,不可欠な手法ですので,どうかご理解頂けますようお願いします. |
|
投稿日時: 2007-12-06 19:05
JDBCで直でいじるんですか?
何らかのO/Rマッピングを利用するのでしょうか? このあたりで回答が変ってくるともいます。 >(バイナリをStringへ変換という手法がある場合は,そちらでも結構です). メールの要領でMIMEエンコードしてしまえばバイナリをStringにできます。 Base64エンコードとかなら簡単にエンコードできて復元も問題ないと思いますよ。 |
|
投稿日時: 2007-12-06 19:40
具体的な環境がわかりませんが
JDBCでのLONGVARBINARY ORACLEでいうLONG RAWとか使えばいいのではないですか。 テキストに変換したりしなくていいですよ。 |
|
投稿日時: 2007-12-06 21:29
オラクルなら ファイルその物を放り込むことができます(バージョンにもよる)
データベース系の話ならDB名を明記したほうが汎用的に扱いたいのであれば そのように記述したほうがいいです。 |
|
投稿日時: 2007-12-06 22:48
BLOB でどうでしょうか?
|
|
投稿日時: 2007-12-07 03:28
皆様ご意見有難うございます。
フリー環境での開発を行っており、PostgreSQL・JDBCでやろうと思っています。Oracleだと推測して返答下さった方々、申し訳ないです。 皆様総じてDBの型の方に注目されているようですので、DBの方の型から検討してみます。 今出ている分ではBLOB(bytea)か、LONGVARBINARYと言った感じですね。どちらがいいのでしょうか。 |
|
投稿日時: 2007-12-07 03:35
すいません、変な解釈をしていたようです。
LONGVARBINARYというのが初耳だったので、少し戸惑ってしまいました。 結局Postgresではbytea型でいけそうだということみたいですね。 |
|
投稿日時: 2007-12-07 22:55
ご指摘有難うございます。無事解決致しました。
・bytea型でDB構成 ・格納はbinaryStreamを、PreparedStatementを用いてSQL文にし、発行 ・取得はgetBinaryStream()を用いる 以上の事で、今回の機能は実装できました。特に2項目は知らない方もいるのではと思い、挙げてみました(自分はずっとStatementだけを用いていました)。 皆様有難うございました。 |