PostGIS에서 제공하는 pgsql2shp 명령어를 이용하면 공간정보를 포함하는 테이블을 SHP형태로 내려받을 수 있다. pgsql2shp 기본명령어 pgsql2shp -f [경로를 포함한 파일명.shp] -g [geometry 컬럼명] -h [host] -u [user명] -p [port] -P [password] [database] [스키마를 포함하는 테이블명] pgsql2shp 샘플 명령어 pgsql2shp -f my_shp.shp -g geom -h 192.168.50.100 -p 7932 -u postgres -P postgres myDB geo.geoTable; 위는 샘플 명령어이다. 명령어를 각 풀어서 보면 아래와 같다. -f my_shp.shp 👉️ 기본경로에 my_shp이라는 파일명으로..
이번에 프로젝트를 하면서 테이블을 생성하는 프로시저를 만들 일이 있어서 한번 작성해본다. Postgresql : 테이블 생성 및 삭제 프로시저 작성 샘플코드 CREATE OR REPLACE PROCEDURE 스키마.프로시저명() LANGUAGE plpgsql AS $procedure$ begin execute 'DROP TABLE IF EXISTS 스키마.테이블명 CASCADE'; execute 'CREATE TABLE IF NOT EXISTE 스키마.테이블명 ( my_id varchar(20) NOT NULL, my_pwd numeric(20) NOT NULL, my_name varchar(20) NOT NULL )'; END; $procedure$ ; 위는 진짜 간단하게 테이블을 CREATE하고 DR..
Postgresql를 사용하다보면 테이블명이나 컬럼명, Value값에 쌍따옴표나 홑따옴표를 넣어줘야 할 일이 있다 그럴때 사용할 수 있는 함수가 quote_ident와 quote_literal이다. 각 사용법에 대해 알아보자. quote_ident함수를 이용한 쌍따옴표 표기방법 사용방법 quote_ident(value); 'CREATE TABLE my_schema.' || quote_ident(my_table); 결과 "value" CREATE TABLE my_schema."my_table" 이렇게 쌍따옴표로 감싸준다.. 그럼 굳이 이 함수를 쓰는 이유가 있을까? 있다. 하드코딩이라면 문제 없지만 프로시저/함수 생성시에 테이블명이나 컬럼명을 파라메터로 받아온다고 하면, 또 대문자가 포함되어 있다고 하면 ..
Postgresql에서 유저생성 및 데이터베이스 접근권한 부여 명령어 정리 사용자 생성 쿼리문 기본문법 CREATE USER [유저명] WITH PASSWORD [패스워드]; 샘플 CREATE USER blue WITH PASSWORD 'blue'; 데이터베이스 접근권한 부여 쿼리문 기본문법 GRANT ALL PRIVILEGES ON DATABASE [데이터베이스명] TO [권한을 줄 유저명]; -- GRANT 옵션 : { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] } 샘플 -- postgres DB에 red라는 사용자가 접근할 수 있도록 권한부여 GRANT ALL PRIVILEGES ON DATABASE postgres TO ..
이번에 이벤트 트리거를 만들려고 했는데, 이미 존재하는 이벤트 트리거라면서 Create가 되지 않는다. 그래서 해당 이벤트 트리거를 삭제 해야 되는데 어디에 저장되는지 모르는 상황.. 그렇게 찾아보니 자신이 Create한 이벤트 트리거는 pg_event_trigger이라는 테이블에 저장된다는 것을 알았다. 그러니 해당 테이블을 조회만 하면 된다. Postgresql : 이벤트 트리거 목록 조회하는 방법 쿼리문 SELECT * FROM pg_event_trigger; 결과 evtname 컬럼에 있는 auto_grant_trigger이라는 녀석이 내가 예전에 생성해놓고 까먹은 이벤트 트리거이다. 그래서 이미 auto_grant_trigger라는 트리거가 있는데 또 auto_grant_trigger라는 트리거..
오늘은 카테고리와 같은 기능을 구현할 때 쓰이는 계층형 쿼리에 대해 알아보자. Postgresql에서는 데이터의 트리구조(계층)를 표현하기 위해서 RECURSIVE 키워드를 통해 재귀적인 쿼리를 사용한다고 한다. 여기서 재귀란 어떠한 것을 정의할 때 자기자신을 참조한다는 의미이다. 중요한 건 아니니 바로 계층형 쿼리를 통해 트리구조를 만들어보자. 샘플 테이블 생성 CREATE TABLE RECURSIVE_BOOK( BOOK_ID INTEGER NOT NULL, PARENT_ID INTEGER, BOOK_NAME CHARACTER VARYING(20) NOT NULL, BOOK_QTY INTEGER, CONSTRAINT BOOK_KEY PRIMARY KEY (BOOK_ID)); 샘플 데이터 적재 INSER..