본문 바로가기

PostgreSQL

[PostgreSQL] PL/pgSQL - SQL Procedural Language ( Function ) PostgreSQL에서는 Procedural Language를 Function으로 사용한다. PostgreSQL에서 PL/pgSQL의 기본 구조는 다음과 같다. DECLARE : 변수 선언부BEGIN ~ END : FUNCTION 내용 간단하다. integer형 숫자를 반환하는 간단한 Function을 만들면 다음과 같다.CREATE OR REPLACE FUNCTION "FN_Test1"() RETURNS integer AS$BODY$DECLARE temp_number integer;BEGIN temp_number = 1; RETURN temp_number;END$BODY$ LANGUAGE plpgsql VOLATILE COST 100;ALTER FUNCTION "FN_Test1"() OWNER TO p.. 더보기
[Spring] spring mybatis postgresql 연동 Spring Tool Suite(STS)는 Maven을 통해 필요한 .jar 파일들을 받아올 수 있다. 이는 프로젝트의 환경을 셋팅하는데 매우 유용하다. 필요한 파일은 http://mvnrepository.com/에서 검색하면 쉽게 찾을 수 있다. 해당 내용을 프로젝트의 porm.xml에 입력하면 된다. org.mybatismybatis3.1.1org.mybatismybatis-spring1.1.1postgresqlpostgresql9.1-901.jdbc4 STS는 친절하게도 web.xml, root-context.xml, servlet-context.xml으로 분리해 놓고 있다. 뭐... 이건 단순한 프로젝트를 더 복잡하게 만들 수도... 복잡한 프로젝트를 잘 구분해 나누어 놓을 수도... 뭐... 일.. 더보기
[PostgreSQL] PostgreSQL Trigger * Create Trigger Function * Create Trigger CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] } ON table [ FROM referenced_table_name ] { NOT DEFERRABLE | [ DEFERRABLE ] { INITIALLY IMMEDIATE | INITIALLY DEFERRED } } [ FOR [ EACH ] { ROW | STATEMENT } ] [ WHEN ( condition ) ] EXECUTE PROCEDURE function_name ( arguments ) where event can be one of: INSERT UPDATE.. 더보기
[PostgreSQL] import csv data into postgresql csv 파일 -> PostgreSQL SQL Shell (psql) # \COPY [테이블이름] FROM '[파일경로]' WITH DELIMITER ',' CSV HEADER; PostgreSQL -> csv 파일 # \COPY [테이블이름] TO '[파일경로]' WITH DELIMITER ',' CSV HEADER; 더보기
[PostgreSQL] backup - pg_dump Synopsis pg_dump [connection-option...] [option...] [dbname] 뭐... pgAdmin3를 사용하면 더욱 편하게 백업할 수 있다. 그런제 갑자기 pgAdmin3에서 복원을 할 때 restore가 활성화가 안되서 '이게 뭔일인가?' 하고 알아봤다. Options -E encoding --encoding=encodingCreate the dump in the specified character set encoding. By default, the dump is created in the database encoding. (Another way to get the same result is to set thePGCLIENTENCODING environment var.. 더보기
[PostgreSQL] with를 이용한 temp_table 사용 with를 이용하여 쿼리문을 작성하면 temp_table을 이용하여 보다 효율적으로 쿼리문을 작성할 수 있다. WITH AS( SELECT column1, column2, column3 from table_name; )SELECT * FROM ; with는 위와 같이 사용하고, temp_table은 2개 이상 작성도 가능하다. 그리고 with를 사용하면 원하는 데이터를 temp_table_name의 이름으로 묶어 마지막 SELECT 문에서 with 안의 데이터를 이용하여 다시 조건을 주어 SELECT가 가능하다. sub query를 이용하면 sub query 데이타를 외부에서 조건으로 사용하기가 까다롭기 때문에 사용하기에 따라 with를 사용하면 유용하다. 더보기
[PostgreSQL] LOOP문을 이용한 배열 데이터 저장 테이블에 연속적인 데이터를 입력할 필요가 있을 때 function 파라미터를 배열로 받아서 저장하는 방법을 사용하면 편하다. 예를 들어 상품을 주문할 경우 그 주문건에 상품 품목이 한개라면 상관이 없지만 상품 품목이 여러개라면 한 주문번호에 여러 상품의 데이터가 저장될 필요가 있다. 이를 위해서는 주문에 관한 테이블도 최소 2개 이상이 필요하게 된다. 하나는 주문에 관한 데이터가 입력되는 테이블, 또 하나는 주문에 대해 관련 상품 정보들을 담고 있는 테이블이다. 그리고 이렇게 되면 두번째 테이블은 주문ID와 상품ID를 PK로 사용하게 될 것이다. PostgreSQL에서 배열 데이터 타입은 character varying[], integer[], text[] 등등이 있고, anyarray 등의 배열관련 데.. 더보기
[PostgreSQL] Add auto increment column in PostgreSQL 지금까지는 고유 번호 생성 function을 하나 만들고 이것만 쓰다가 타 데이터베이스에서 쓰는 autoIncrement 적용하려 알아보니 이런 방법이... 1. sequence 생성 CREATE SEQUENCE 2. 변경할 컬럼에 sequence 적용 ALTER TABLE ALTER COLUMN SET DEFAULT nextval(); 참고 : http://siphu.wordpress.com/2009/08/10/add-auto-increment-column-in-postgresql/ 더보기