티스토리 뷰
안녕하세요. 인포믹스 LOB(Large Object) 타입의 데이터 크기를 계산하는 방법을 테스트해봤습니다.
LOB 타입 데이터를 처리할 수 있는 함수가 없는 것으로 알고 있어서, 아래와 같이 blademgr의 번들된 모듈을 설치해서 사용했습니다.
1. 먼저 테스트용 데이터베이스 stores_demo를 아래와 같이 만듭니다.
$ dbaccessdemo -log -dbspace datadbs1
2. blademgr에서 LOB 타입 데이터를 처리하기 위한 모듈을 아래와 같이 설치합니다.
$ blademgr
ol_informix1210_1>show databases
Databases on server:
stores_demo
sysadmin
sysuser
ol_informix1210_1>list stores_demo
DataBlade modules registered in database stores_demo:
TimeSeries.6.00.FC7 ifxrltree.2.00
spatial.8.22.FC2
ol_informix1210_1>show modules
16 DataBlade modules installed on server ol_informix1210_1:
LLD.1.20.FC2 Node.2.0 c
TSAFuncs.1.00.FC1 TSPIndex.1.00.FC1
TSPMatch.2.00.FC1 TimeSeries.6.00.FC7
binaryudt.1.0 bts.3.10
excompat.1.0 ifxbuiltins.1.1
ifxregex.1.00 ifxrltree.2.00
mqblade.2.0 spatial.8.22.FC2
sts.2.00.FC1 wfs.1.00.FC1
A 'c' indicates DataBlade module has client files.
If a module does not show up, check the prepare log.
ol_informix1210_1>register excompat.1.0 stores_demo
Register module excompat.1.0 into database stores_demo? [Y/n]y
Registering DataBlade module... (may take a while).
DataBlade excompat.1.0 was successfully registered in database stores_demo.
3. 위와 같은 절차로 설치하고 나면 dbms 관련 함수와 프로시저가 생성된 것을 확인할 수 있습니다.
$ dbschema -d stores_demo -f all | egrep 'create function.*dbms_|create procedure.*dbms'
create function "informix".dbms_lob_getlength (blob)
create function "informix".dbms_lob_getlength (clob)
create function "informix".dbms_lob_compare (blob,blob,integer default 2147483647,integer default 1,integer default 1)
create function "informix".dbms_lob_substr (clob,integer default 32767,integer default 1)
create function "informix".dbms_lob_instr (clob,lvarchar,integer default 1,integer default 1)
create function "informix".dbms_lob_new_clob (lvarchar)
create function "informix".dbms_lob_compare (clob,clob,integer default 2147483647,integer default 1,integer default 1)
create function "informix".dbms_random_jrand48 (inout bigint)
create procedure "informix".dbms_output_enable (integer default 20000)
create procedure "informix".dbms_output_disable ()
create procedure "informix".dbms_output_put (lvarchar)
...
4. 인포믹스 데모 프로그램의 샘플 이미지 파일을 입력하기전에 사이즈를 확인합니다.
$ ls -l demo/esqlc/cn*.gif
-rw-r--r-- 1 informix informix 15736 Apr 19 18:08 demo/esqlc/cn_10001.gif
-rw-r--r-- 1 informix informix 21454 Apr 19 18:08 demo/esqlc/cn_10027.gif
-rw-r--r-- 1 informix informix 11751 Apr 19 18:08 demo/esqlc/cn_10031.gif
-rw-r--r-- 1 informix informix 25610 Apr 19 18:08 demo/esqlc/cn_10046.gif
-rw-r--r-- 1 informix informix 7937 Apr 19 18:08 demo/esqlc/cn_10049.gif
5. 입력할 테이블을 만들고 LOB 데이터 크기를 계산합니다.
$ dbaccess stores_demo -
> create table test (filename varchar(30), img blob);
> insert into test values ('cn_10001.gif', filetoblob('./demo/esqlc/cn_10001.gif','client'));
> insert into test values ('cn_10027.gif', filetoblob('./demo/esqlc/cn_10027.gif','client'));
> insert into test values ('cn_10031.gif', filetoblob('./demo/esqlc/cn_10031.gif','client'));
> insert into test values ('cn_10046.gif', filetoblob('./demo/esqlc/cn_10046.gif','client'));
> insert into test values ('cn_10049.gif', filetoblob('./demo/esqlc/cn_10049.gif','client'));
> select filename, dbms_lob_getlength (img) from test;
filename (expression)
cn_10001.gif 15736
cn_10027.gif 21454
cn_10031.gif 11751
cn_10046.gif 25610
cn_10049.gif 7937
5 row(s) retrieved.
Knowledge Center를 보면 DBMS_LOB_LENGTH라고 문서화가 되어있지 않아 혼동이 있을 것 같네요.
참고가 되시기를 바랍니다.
** 참고
http://www-01.ibm.com/support/docview.wss?uid=swg21670983
https://www.ibm.com/support/knowledgecenter/SSGU8G_12.1.0/com.ibm.dbext.doc/ids_r0055123.htm
- Total
- Today
- Yesterday