DBF를 SQLite DB 파일로 만들기

DBF 파일을 엑셀로 불러온 후 첫행에서 FID 라는 이름의 컬럼을 추가합니다. 그리고 이 FID 컬럼의 값을 0부터 시작하여 1씩 증가하도록 지정합니다. 아래가 이와 같은 작업의 예시입니다. 이 FID 컬럼이 필요한 이유는 SHP 파일의 도형와의 1:1 관계키로 사용하기 위함입니다.

그리고 이 파일을 텍스트(탭으로 분리)로 저장합니다. 이 파일을 인코딩은 ANSI로 되어 있는 경우가 있는데 이를 UTF-8로 변환합니다. 저 같은 경우 메모장에서 불러와 UTF-8로 인코딩을 지정하여 저장하였습니다.

SQLite Expert Professional 버전을 실행합니다. [File]-[New Database]를 실행하여 다음과 같이 지정하고 OK 버튼을 클릭합니다.

일반적으로 Database File 안에는 다수의 테이블이 존재하지만 단 하나의 테이블만 존재하며 이 테이블의 이름과 Database File의 이름은 같다라고 약속합니다. 이 부분은 모바일 GIS 엔진인 블랙포인트에서 필요한 약속이므로 블랙포인트를 위한 변환이 아니라면 관계없습니다.

그리고 [Import/Export]-[Import Text File]을 실행하고 다음처럼 앞서 만들어 놓은 텍스트 파일을 지정한 후 Start 버튼을 클릭하여 실행합니다.

테이블이 만들어 졌고 만들어진 필드를 보다 정확하게 조정하기 위해 Design 탭 안의 Fields 탭을 선택하여 Type, Size를 지정합니다. 그리고 필요하다면 Not Null을 체크하도록 하여 Null 값을 경우 기본값을 가지도록 합니다. 이는 Null 일 경우에 발생할 수 있는 예외를 대비할 수 있습니다. 블랙포인트에서는 이런 Not Null 처리가 반드시 필요하며 Type은 Size가 0인 INTEGER, Size가 0이 아닌 CHAR, Size가 0인 FLOAT만이 가능합니다.

그리고 인덱스를 걸기 위해서 Desing 탭 안의 Indexes 탭을 선택하여 인덱스를 추가합니다. 최소한 FID는 인덱스를 걸어주는 것이 좋으며 검색으로 사용하는 필드가 있다면 인덱스를 걸어줍니다.

SQLite에서 몇 가지 SQL 문 정리

SQLite에서 몇가지 필요한 SQL 문을 찾아 정리해 봅니다. 기존의 SHP 파일의 속성 정보를 DBF 파일을 통해 사용했으나 몇가지 중요한 이유로 인해 SHP 파일의 속성을 DBF 파일이 아닌 SQLite로 대체하고자 함인데요. SQLite의 DB가 갖는 다음과 같은 장점을 갖고자 함입니다.

  • DB가 단 하나의 파일로 구성되어 있어서 SHP 파일과 함께 쉽게 전달이 가능함
  • SQL문의 WHERE 절을 통한 다양한 검색 조건을 줄 수 있음
  • Index를 걸어 빠른 검색이 가능함
  • 속성 값을 SQL의 UPDATE 문을 통해 쉽게 할 수 있음

SQLite의 DB 파일을 DBF 파일 대신 사용하기 위해 기본적으로 파악해야할 SQL 문은 다음과 같습니다. 먼저 SQLite 파일에 존재하는 테이블의 이름을 얻기 위한 SQL 문입니다.

SELECT name FROM sqlite_master WHERE type = 'table'

위의 SQL문의 실행 결과에 대한 예는 아래 그림과 같습니다.

사용자 삽입 이미지

다음은 특정 테이블을 구성하는 필드의 이름과 타입을 얻는 SQL 문입니다.

pragma table_info(TL_SCCO_EMD)

사실 위는 명령은 SQL 문이 아닙니다. 여튼 위의 결과에 대한 예는 아래와 같습니다.

사용자 삽입 이미지

그리고 해당 테이블의 레코드 개수를 얻는 SQL문은 다음과 같습니다.

SELECT COUNT(*) FROM TL_SCCO_EMD

위의 SQL 문의 결과에 대한 예는 다음과 같습니다.

사용자 삽입 이미지