database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
ㆍInformix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Informix Tutorials 1518 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 1518
Informix IDS9.* 의 강력한 DataLoading Tool
작성자
정재익(advance)
작성일
2002-10-19 19:16:13
조회수
9,741

onpladm quick start guide

 

onpladm은 GUI환경의 ipload나 shell program을 대체할 수 있는 서버 명령어로 IIF 9.2버전 이후에 제공된다. job은 mapping과 formatting이 필요한 conversion job과 informix의 internal format 즉, unload/load형태로 자료를 사용할 수 있는 non-conversion job이 있다.

 

non-conversion job 생성

onpladm create job  [-p ] -d  
          -D  -t  -f [luadp] 
          [-T ] [-S ] 

예)onpladm create job customer2 -d /tmp/pload/customer2.unl -D stores_demo -t customer2 -fu -n

 

Successfully created Job customer2

 

최초로 job을 생성하면 onpload 데이터베이스 생성된다

 

-n옵션은 no-conversion job이란 의미

-f옵션에는 u(unload), l(load), a(device array), d(tape device), p(pipe command)를 넣을 수 있는데, u나 l옵션 하나만 넣어도 unload job과 load job이 한번에 생성된다 (왜 그럴까?)

 

job list 확인

 

onpladm list job [ -p <projectname>] -f[lu] [-S <onploadservername>]

 

예)onpladm list job

customer2 [L]

customer2 [ U]

 

list옵션에는 job외에도 map, format, query, device, filter, machine, project, default 옵션이 있는데, no-conversion job을 생성했다면 query와 device에만 정보가 들어있다.

즉, query리스트를 보려면 onpladm list query 실행

 

job실행

 

onpladm run job <jobname> -p <projectname> -f [lu]

[-l <log_file_name>] [-S <onploadservername>]

 

예)onpladm run job customer2 -fu

 

Successful connection to onpload established

Wed Mar 21 19:10:26 2001

 

SHMBASE        0xa000000
CLIENTNUM      0x49010000
Session ID 2

Unload Database -> stores_demo
Query Name      -> AUTO.2
Device Array    -> customer2
Query Mapping   -> AUTO.2
Query           -> select * from customer2 for read only
Convert Reject  -> /tmp/customer2.rej
Database Unload Completed -- Unloaded 28 Records Detected 0 Errors
Wed Mar 21 19:10:30 2001

Job Completed Successfully ... connection closed

 

-l옵션을 주고 로그파일을 지정하면 화면상에 출력되는 메시지가 파일로 저장된다

 

job 내용 확인

onpladm describe job -f[lu] [-F <specfilename> [-p <projectname> ] [-R] [-S <onploadservername>]

 

예) onpladm describe job customer2 -fu

BEGIN OBJECT FASTUNLOADJOB customer2
PROJECT                  
DEVICE                   customer2
SERVER
DATABASE                 stores_demo
QUERY                    customer2
END OBJECT

 

list옵션과 마찬가지로 describe뒤에 map, format, query, device, filter, machine, project, default 옵션을 사용할 수 있다

 

예) onpladm describe query customer2

BEGIN OBJECT QUERY customer2
PROJECT                  
DATABASE                 stores_demo
SELECTSTATEMENT          "select * from customer2"
END OBJECT
예) onpladm describe device customer2 
BEGIN OBJECT DEVICEARRAY customer2
BEGIN  SEQUENCE
TYPE                     FILE
FILE                     /tmp/pload/customer2.unl
TAPEBLOCKSIZE            0
TAPEDEVICESIZE           0
PIPECOMMAND
END  SEQUENCE
END OBJECT

 

job 변경

 

onpladm modify object [-F <specfilename>] [-S <onploadservername>]

 

다음은 device를 변경하는 예제이다

 

예)vi customer2.mod

BEGIN OBJECT DEVICEARRAY customer2
BEGIN  SEQUENCE
TYPE                     FILE
FILE                     /tmp/pload/customer.txt
TAPEBLOCKSIZE            0
TAPEDEVICESIZE           0
PIPECOMMAND
END  SEQUENCE
END OBJECT

예)onpladm modify object -F ./customer2.mod

 

Successfully modified object DEVICEARRAY customer2

 

specfile을 만들기 위해서 describe로 기존의 값을 먼저 파일로 저장하고 그 구문에 맞춰 필요한 부분을 고치면 편리하다

 

job 삭제

 

onpladm delete job <jobname> [-p <projectname>] [-R] [-S <onploadservername>]

 

예)onpladm delete job customer2 -fl

 

Successfully deleted Job customer2

 

위의 경우 customer2의 unload job은 삭제되지 않고 남아있다

job을 모두 삭제하더라도 query나 device등에는 여전히 남아있다

따라서, 완전히 모든 정보를 지우기 위해서는 각각 delete명령을 사용해야한다

 

예)onpladm delete device customer2

Successfully deleted Device-Array customer2

 

예)onpladm delete query customer2

Successfully deleted Query customer2

 

CASE STUDY - fixed length 데이터 로드

 

테이블 생성

 

$ dbaccess stores_demo << !

create table fixedlengthtable (

col1 int,

col2 char(3),

col3 char(3) );

!

 

데이터파일

 

$ vi /tmp/pload/fixedlength.dat

1abc123

2bcd234

3cde345

4def456

5efg567

6fgh678

7ghi789

8hij890

9ijk901

 

device 정의

 

$ vi /tmp/pload/fixed.device

BEGIN OBJECT DEVICEARRAY fixeddevice
BEGIN  SEQUENCE
TYPE                     FILE
FILE                     /tmp/pload/fixedlength.dat
TAPEBLOCKSIZE            0
TAPEDEVICESIZE           0
PIPECOMMAND
END  SEQUENCE
END OBJECT
$ onpladm create object -F fixed.device
Successfully created object DEVICEARRAY fixeddevice

 

format 정의

 

$ vi /tmp/pload/fixed.format

BEGIN OBJECT FIXEDFORMAT fixedformat
PROJECT                  
CHARACTERSET             ASCII
MACHINE                  Sparcstation

BEGIN  SEQUENCE
FIELDNAME                f01
DATATYPE                 "Chars"
BYTES                    1
DECIMALS
OFFSET                   0
END  SEQUENCE

BEGIN  SEQUENCE
FIELDNAME                f02
DATATYPE                 "Chars"
BYTES                    3
DECIMALS
OFFSET                   1
END  SEQUENCE

BEGIN  SEQUENCE
FIELDNAME                f03
DATATYPE                 "Chars"
BYTES                    3
DECIMALS
OFFSET                   4
END  SEQUENCE

BEGIN  SEQUENCE
FIELDNAME                f04
DATATYPE                 "Chars"
BYTES                    1
DECIMALS
OFFSET                   7
END  SEQUENCE
END OBJECT

데이터 파일의 carriage return값을 읽기 위해서 f04를 선언했다

 

$ onpladm create object -F fixed.format

Successfully created object FIXEDFORMAT fixedformat

 

map 정의

 

$ vi /tmp/pload/fixed.map

BEGIN OBJECT LOADMAP fixedmap
PROJECT                  
FORMAT                   fixedformat
DATABASE                 stores_demo
TABLE                    fixedlengthtable

BEGIN  SEQUENCE
COLUMNNAME               col1
FIELDNAME                f01
JUSTIFICATION
CASECONVERT
DEFAULTVALUE
TRANSFERBYTES            0
COLUMNOFFSET             0
FIELDOFFSET              0
FIELDMINIMUM
FIELDMAXIMUM
FILLCHARACTER
PICTURE
FUNCTION
STORAGECODING
BLOBCOLUMN
END  SEQUENCE

BEGIN  SEQUENCE
COLUMNNAME               col2
FIELDNAME                f02
JUSTIFICATION
CASECONVERT
DEFAULTVALUE
TRANSFERBYTES            0
COLUMNOFFSET             0
FIELDOFFSET              0
FIELDMINIMUM
FIELDMAXIMUM
FILLCHARACTER
PICTURE
FUNCTION
STORAGECODING
BLOBCOLUMN
END  SEQUENCE

BEGIN  SEQUENCE
COLUMNNAME               col3
FIELDNAME                f03
JUSTIFICATION
CASECONVERT
DEFAULTVALUE
TRANSFERBYTES            0
COLUMNOFFSET             0
FIELDOFFSET              0
FIELDMINIMUM
FIELDMAXIMUM
FILLCHARACTER
PICTURE
FUNCTION
STORAGECODING
BLOBCOLUMN
END  SEQUENCE
END OBJECT

format에서는 f04를 선언했지만 mapping시키지는 않는다

 

$ onpladm create object -F fixed.map

Successfully created object LOADMAP fixedmap

 

device 정의

 

$ vi /tmp/pload/fixed.job

BEGIN OBJECT LOADJOB fixedjob
PROJECT                  
DEVICE                   fixeddevice
MAP                      fixedmap
FILTER
SERVER
DATABASE                 stores_demo
REJECTFILE               /tmp/pload/fixedjob.rej
LOGFILE                  /tmp/pload/fixedjob.log
RUNMODE                  E
GENERATEVIORECS          Y
TAPES                    0
NUMRECORDS               0
STARTRECORD              0
MAXERRORS                0
END OBJECT

$ onpladm create object -F fixed.job

Successfully created object LOADJOB fixedjob

 

data load

 

$ onpladm run job fixedjob -fl

Connecting to onpload, Please wait...
Successful connection to onpload established
Thu Mar 22 11:19:59 2001
SHMBASE        0xa000000
CLIENTNUM      0x49010000
Session ID 8

Load Database   -> stores_demo
Load Table      -> fixedlengthtable
Device Array    -> fixeddevice
Record Mapping  -> fixedmap
Convert Reject  -> /tmp/pload/fixedjob.rej
Table 'fixedlengthtable' will be read-only until level 0 archive

Database Load Completed -- Processed 9 Records
Records Inserted-> 9
Detected Errors--> 0
Engine Rejected--> 0

Thu Mar 22 11:20:05 2001
Job Completed Successfully ... connection closed 

 

마치며...

 

기존에 사용하던 shell이나, ipload 작업과 마찬가지로 onpladm에서 job을 생성하면 모든 정보는 onpload 데이터베이스에 만들어지는데, 몇가지 테이블을 업데이트하여 필요한 정보 변경할 수 있다.

 

unload 파일의 delimiter를 다른 문자로 변경하고 싶으면

formats 테이블에서 fieldsep 컬럼에 변경할 delimiter문자를 넣는다.

log파일을 변경하고 싶으면

session테이블에서 logfile 컬럼에 전체경로와 파일명을 넣는다.

reject파일을 변경하고 싶으면

session테이블에서 rejectfile 컬럼에 전체경로와 파일명을 넣는다.

runmode(express,deluxe)를 변경하고 싶으면

session테이블에서 runmode를 변경한다

LOAD JOB

deluxe : 129

express : 130

UNLOAD JOB

Dirty Read : 129

Committed Read : 130

 

한글 로케일을 사용해야한다면 session테이블에서 datatype컬럼값을 ASCII에서 KS5601로 바꾼다 .

데이터파일을 여러개로 구분한다면 device테이블에서 seq를 1부터 증가하면서 file컬럼에 데이터파일명을 넣는다.

 

즉,seq:1, file:/tmp/customer1.unl

seq:2, file:/tmp/customer2.unl 등등..

 

위의 모든 테이블에서 키가 되는 컬럼은 name인데 update할때 where절에 name조건을 넣지 않아서 전체 job이 몽땅 변경되는 사태는 만들지 말아야 하겠다.

 

음.. 이정도쯤은 shell로 만들어 놔도 간단히 쓸만 하겠는데..

 

onpladm에 대해 더 자세한 내용은 인포믹스 onpladm 매뉴얼을 참조한다

[Top]
No.
제목
작성자
작성일
조회
1521SQL성능향상을위한방법
정재익
2002-10-19
10928
1520체크포인트
정재익
2002-10-19
8700
1519session's lock release
정재익
2002-10-19
13152
1518Informix IDS9.* 의 강력한 DataLoading Tool
정재익
2002-10-19
9741
1510인포믹의 개요
정재익
2002-10-19
7502
1228Java-DB (JDBC) 연결
정재익
2002-01-07
6923
1202인포믹스와 Servlet 의 연동방법
정재익
2001-12-20
6881
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.076초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다