본 장에서는 Tibero Spatial에서 제공하는 gisLoader의 사용법에 대해서 기술한다.
Tibero Spatial에서는 shapefile 형식으로 되어 있는 공간 데이터를 Tibero로 적재하는 데 사용할 수 있는 gisLoader 라는 독립 실행형 유틸리티를 제공한다.
gisLoader 유틸리티는 shapefile 형태로 되어 있는 파일의 데이터를 읽어들여서 tbLoader의 입력이 되는 데이터 파일을 생성한다. 즉, 사용자는 먼저 gisLoader 유틸리티를 사용하여 shapefile을 tbLoader의 입력 파일로 변환하게 되고, 그 다음 tbLoader를 사용해 최종적으로 공간 데이터를 Tibero에 적재할 수가 있게 된다.
shapefile을 구성하는 .shp, .shx, .dbf 파일 중에서 .shx 파일은 gisLoader 유틸리티에서 해석하지 않는다. 즉, 이 파일에 해당되는 shapefile 정보는 모두 유실된다.
gisLoader에서 해석이 가능한 shapefile의 shape type은 Null, Point, Polyline, Polygon, Multipoint로 한정된다. 이 외의 shape type이 shapefile 내에 존재할 경우 gisLoader 유틸리티는 수행을 멈추고 에러를 출력한다.
gisLoader가 생성하는 파일은 tbLoader의 입력 파일인 .ctl 파일과 .dat 파일이다(컨트롤 파일과 데이터 파일). 다만 테이블을 생성할 수 있는 스키마 스크립트 등은 생성해 주지 않는다. 그러므로 사용자는 생성된 컨트롤 파일의 내용을 조회하여 이후 tbLoader를 수행할 때 데이터가 정상적으로 적재될 수 있는지를 먼저 확인해야 한다. 예를 들어 기존의 테이블이 존재하지 않는 상태라면 데이터를 적재할 테이블을 미리 생성해 놓아야 한다.
다음은 gisLoader에서 생성한 .ctl 파일의 예제이다.
LOAD DATA INFILE 'test_table.dat' LOGFILE 'test_table.log' BADFILE 'test_table.bad' APPEND INTO TABLE test_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' LOBFILE LOAD PARTIALLY DELIMITED BY ';' GEOMETRY LOAD AS BLOB (ID, FIPSSTCO, TRACT2000, BLOCK2000, STFID, geom OUTFILE)
적재할 테이블이 존재하지 않을 때 적재가 가능한 테이블은 다음의 create table 문을 통해 생성이 가능하다.
create table test_table (ID number, FIPSSTCO number, TRACT2000 number, BLOCK2000 number, STFID number, geom GEOMETRY);
tbLoader의 자세한 사용법은 "Tibero 유틸리티 안내서"를 참고한다.
사용법
gisLoader <shapefile name> <table name> <idcol=newcolname> <endian=big/little> <multipolygon=Y|N>
항목 | 설명 |
---|---|
shapefile name | 이미 존재하는 .shp 파일의 파일 이름을 명시한다. |
table name | 최종적으로 tbLoader를 통해 데이터를 적재하게 될 데이터베이스의 테이블 이름을 명시한다. |
idcol | dbf 파일이 아닌 shp 파일의 record number를 이용하여 생성되는 컬럼의 이름을 명시한다. 생략하면 새로 컬럼을 생성하지 않는다. |
endian | 생성되는 Geometry type에서 사용될 endian 정보(big/little)를 명시한다. 생략하면 해당 머신 endian 정보를 사용한다. |
multipolygon | .shp 파일의 Polygon type을 모두 multipolygon type으로 변환한다. Polygon type으로 변환하려면 N으로 설정한다. |
예제
gisLoader test.shp test_table idcol=pk endian=little multipolygon=N