私はinformixデータベースにバイナリBLOBフィールド(jpg)としてイメージをいくつか持っていますが、どのようにイメージをSQLでディスクに書き込むことができますか?InformixのディスクにバイナリBLOBを書き込む方法
答えて
データはBYTEフィールドまたはBLOBフィールドに格納されていますか?データがBLOB列に格納されている場合
、あなたが使用することができます。データはBYTE列に格納され
SELECT LOTOFILE(blob_column, '/path/to/file/on/client', 'client')
FROM TheTable
WHERE PK_Column = 23411 -- PK value
場合は、かなり難しい仕事をしなければなりません。マシンにESQL/C(ClientSDK)とCコンパイラがある場合は、IIUG Software ArchiveからSQLCMDを入手し、ソフトウェアを抽出することをお勧めします。 Informix環境が必要です.Cプログラムをコンパイルできる必要があります。その後、実行します。
./configure --prefix=$HOME/bin
をそれはあなたが接頭辞として指定したものをあまり問題ではない - あなただけのconfigureスクリプトを実行する必要があります。
すべてをコンパイルするか(make
)、プログラムselblob
(make selblob
)をコンパイルするだけです。そのプログラムは私が「ビネット」と呼んでいるものです。ディスクにBYTE BLOBを選択する方法を示す顕微鏡プログラムです。しかし、それは完全に機能しています。それはあなたがそれに投げたり、エラーを診断したりすることに関してはうまくいくでしょう。
データベースがprecious
呼び出された場合は、バイトデータは表byte_table
であり、データを保持するカラムがbyte_column
で、主キー列がcol1
ある(そして必要な値が23
ある)とcol2
(および必要な値)"Habeas Corpus"
あり、その後、次のコマンドを実行します。
selblob -d precious -t byte_table -k col1=23 -k col2="Habeas Corpus" \
-c byte_column -f output_file
これはという名前のファイルにバイト値をアンロードします。
ESQL/CまたはCコンパイラを使用していない場合、またはそれらを使用する権限がない場合、人生はより困難です。最接近は、DB-AccessでUNLOAD文を使用することです:
dbaccess precious - <<!
unload to "output_file"
select byte_column from byte_table where col1 = 23 and col2 = 'Habeas Corpus';
!
これは、バイト値(文字あたり2バイト)の進ダンプを含むファイルを作成します。その後、ファイルを後処理してヘキサを通常のデータに変換する必要があります。列がBYTE列ではなくTEXT列であった場合、変換は必要ないことに注意してください。あなたは(メモリに丸呑みできるほど小さいファイルを提供 - あなたはそれが十分に小さくない場合には難しい仕事をしなければならない)の変換を行うにはかなり単純なPerlスクリプトを使用することができます。
perl -w -e '
$/ = "";
my $data = <>;
while (length($data) > 1)
{
my $hex = substr($data, 0, 2);
printf "%c", hex($hex);
$data = substr($data, 2);
}' <output_file
長条件が指定します " > 1
'を使用して、アンロードされたデータの最後に改行を処理します。
(ヒステリックレーズン、別名「歴史的な理由」の場合、IDS 9.00では「スマートブロブ」の明示的な名前、わずかに異なるペアが導入されましたが、BYTEとTEXTの両方のBLOBタイプが呼び出されます)私の本ではBLOB(小文字)のすべての型ですBLOBおよびCLOBのブロブが出現する前の6年以上の1990年にBYTEおよびTEXTブロブについて学んだ老人たちの問題です追加されました。 いずれの場合でも、古いスタイルのブロブには、代わりの正式な用語がありません。 「ダムの塊」を使用することは政治的に正しいではありません!)
データベースにクエリを行い、ブロブをディスクに保存する小さなプログラムを作成する必要があります。ほとんどのデータベースには、「ディスク上のファイルを開く」という概念はありません。
私はあなたが非常識JONだ私は、MySQL – levhita
- 1. Lucene.Net RAMDirectoryをディスクに書き込む方法は?
- 2. ディスクにMJPEGストリームを書き込む
- 3. 「ページ」単位でディスクに書き込む
- 4. バイナリBLOBをFirebirdからバイト[]にC#で読み込む方法は?
- 5. Rディスクに書き込む前にcsvファイルサイズを推定する方法
- 6. 印刷ジョブイメージをディスクに書き込む方法を教えてください。
- 7. 多次元NumPy配列をstruct.packと同じディスクに書き込む方法は?
- 8. .netプログラムがディスクに書き込むのを防ぐ
- 9. 文字列をバイナリとしてファイルに書き込む方法は?
- 10. Javaで再生中にmp3ファイルをディスクに書き込む
- 11. ディスクにデータを並列に書き込む?
- 12. インクルードファイルにハイパーリンクを書き込む方法
- 13. リンクリストオブジェクトをファイルに書き込む方法
- 14. カーネルスペースにパケットを書き込む方法
- 15. Log4jをコンソールに書き込む方法
- 16. $ .getJSONにオプションパラメータを書き込む方法
- 17. Ext.jsのmemoryproxyに書き込む方法
- 18. VB.NET:MVCのPlaceHolderに書き込む方法
- 19. Javascript - 画像ファイルをblob(html5ファイルapi)に書き込む
- 20. IOユニットからディスクにオーディオを書き込む
- 21. Jetty:アクセスログに書き込む方法
- 22. C#でファイルに書き込む方法
- 23. バイナリファイルに書き込む方法は?
- 24. チャンネル3に書き込む方法は?
- 25. OCamlファイルに書き込む方法は?
- 26. 大きなファイルをWebからiPhoneにダウンロードしてディスクに書き込むための最良の方法
- 27. バイナリからPDFファイルをデータベースに書き込む
- 28. ファイルにバイナリ文字列を書き込む
- 29. CLI:アドレスにバイトを書き込む(コマンドラインからhexedit/modifyバイナリ)
- 30. DataGridViewをプログラムで書き込む方法
に慣れていると思います...私も、そしてもちろんそのはその何かを得た場合、あなたの答えになるだろう、この答えを必要とinformixとの関係 – CheeseConQueso
LOTOFILEは、少なくともInformix 12.10ではBYTEカラムでも動作するようです。 すべての便利なInformixのポストをありがとう、Informixで何かを検索するたびにあなたの名前がポップアップします:) – Otherside