본문 바로가기
카테고리 없음

Friebird 테이블 목록 조회

by rokwha 2018. 3. 21.

isql 을 통해서 show table[s] 명령으로 접속한 데이터베이스의 테이블 목록을 구할수 있지만 SQL 문으로 시스템 테이블을 조회해서 구할수가 있다.


SQL 문은..

이다.


스크립트 파일로 저장후 isql 로 실행 해서 데이블 목록을 파일로 저장 할수 있는데..


isql -q -i fb_show_tables.sql -o fb_table.list database.gdb


* 스크립트 파일에는 SQL 문 뿐만이 아니라 isql 에서 사용할수 있는 내장 명령어도 기술이 가능하다. 예를 들어서 디비접속 구문인 CONNECT 문 이라든가...

위 스크립트 만으로 도 충분 하겟지만은 isql 을 이용해서 테이블 목록을 추출하여 이를 다시 재사용 하는데 있어서는 몇가지 해결 해야 할 부분이 있다.


1. 컬럼명 과 컬럼과 데이터를 구분하는 구분자가 삽입이 되어 이를 없애고자 set heading off 를 사용한다.

2. 기본적으로 LIST 가 off 이겟지만은 일단 set list off 를 사용한다.

3. rdb$relation_name 컬럼이 31자리 인데 기본적으로 공백을 포함해서 결과를 리턴 함으로 자릿수가 길어짐에 있어서 보기가 좀 괴로울수도 있다. 이는 rpad 함수나 set width 문으로 적절히 가공하면 될듯 싶다. * 뭐 굳이 안해도 되긴 할것 같다.

4. 아무리 찾아봐도 아직은 해결이 안되는데 첫행 과 마지막행에 공백라인이 한줄 추가 된다. isql 이 기본적으로 추가 되는 모양인데 제어 옵션은 없는듯 싶다.

완성된 SQL 문은 



isql -q -i fb_show_tables.sql -o fb_table.list database.gdb


참고로 -o 옵션은 내장명령어 out 으로 대체 할수 있으며, 이 둘은 해당 파일이 존재할경우 덮어쓰기가 아닌 추가로 작동한다. 덮어쓰기 를 원한다면 리다이렉션을 이용해야 할것이다.

isql -q -i fb_show_tables.sql database.gdb > fb_tables.list


 

반응형