回答

收藏

如何在Informix在磁盘上写入二进制Blob

技术问答 技术问答 280 人阅读 | 0 人回复 | 2023-09-14

我在notifyix作为二进制,数据库中有一些图像Blob字段(jpg),如何使用SQL在磁盘上写图像?
" J  S* g. w- c" g                                                               
0 g2 f* M% y& {; \# J4 p    解决方案:                                                               
) d+ q7 m3 \5 \  m0 t# d% \% d* n; F0 g                                                                数据存储在BYTE或BLOB字段中吗?
7 H# X) P: A  p7 i; o! |若数据存储BLOB列中于列中:; D( r* \' P  O4 |1 p
SELECT LOTOFILE(blob_column,'/path/to/file/on/client','client')  FROM TheTable WHERE PK_Column = 23411   -- PK value若数据存储BYTE在列中,你必须付出更大的努力。如果你的电脑配备了它ESQL /" M; H5 e: e, H
C(ClientSDK)和C建议从编译器开始IIUG获取软件档案库SQLCMD并解压软件。Informix环境集需要能够编译C程序。
  n/ E- A( I* D9 c# |) W: ?% r  W./configure --prefix=$HOME/bin您指定作为前缀没有什么关系-你只需要操作configure脚本即可。' J4 i5 ~1 {8 i7 S
然后,您可以编译所有内容(make),你也可以简单地编译程序selblob(make selblob)。这个程序就是我所说的) b* A' R2 m: l% z6 }% Y- ^
vignette一个微程序,显示如何选择BYTE blob磁盘。但它也有所有的功能。它几乎可以和你扔给它的任何东西一起工作,或者诊断错误。
$ c, \" K4 O4 S, n6 S6 Z. t如果您的数据库被调用precious,表中有字节数据byte_table,保存数据的列是byte_column,而且主键列是col1(所需值为23)和col2(并且所需的值为"HabeasCorpus"),然后可以运行:
6 o/ s9 k( F. m  x8 Nselblob -d precious -t byte_table -k col1=23 -k col2="Habeas Corpus" \        -c byte_column -f output_file将字节值卸载到命名文件中。# S' _* n3 m' A+ @7 _5 e
如果您没有ESQL / C或C如果编译器或使用它们的权限,生活将更加困难。最接近的方法是DB-Access中使用UNLOAD语句:
: z8 w0 S% q4 h2 M2 I) M& M7 ndbaccess precious - 这将创建一个包含字节值的16进制转储(每个字符2个字节)的文件。然后,您需要对文件进行后处理,以将16进制转换为常规数据。请注意,如果列是TEXT列而不是BYTE列,不需要转换。你可以用一个相当简单的Perl脚本转换(只要文件足够小,就可以拖入内存-
  T. t' O& F* _8 Q7 i. C& B, t若文件不够小,则必须更加努力地工作):& V% H8 O( w) `0 R
perl -w -e     $/ = "";    my $data = ;    while (length($data) > 1)  {            my $hex = substr($data,0,2);       printf "%c",hex($hex);        $data = substr($data,2);    长度条件指定 > 1在卸载数据末尾处理换行符。
# ], {! T0 P: q5 k& r! ~尽管IDS9.引入了智能blob显式名称BLOB和CLOB,但是他们对数据类型略有不同,我仍然会BYTE和TEXT称为“ blob类型。大致相应的功能-: z  s9 g7 b$ k0 H. u* d
在我的书中,它们都是blob(小写)类型,这是1990年了解BYTE和TEXT blob老家伙的麻烦增加了BLOB和CLOB/ z  v  d8 ]7 B3 ]& |, `, J
blob已经六年多了。在这种情况下,对于旧的Blob,官方术语没有很好的替代品;使用哑巴Blob政治上是不正确的!)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则