Database/PostgreSQL2020. 11. 6. 16:39

 mdate (속성 timestamp) 컬럼을 '2020-11-01' 에서 '2020-11-06' 일 까지 검색

# 잘못 됨
WHERE to_char(mdate,'YYYY-MM-DD') BETWEEN '2020-11-01' AND '2020-11-06'

# 권장하지 않음
WHERE mdate::date BETWEEN '2020-11-01'::date AND '2020-11-06'::date

데이터가 많은 테이블에서 timestamp 를 to_char 로 변한하면 안 됨.  Index 안 탐.

개선

# mdate 컬럼 속성을 변경하지 않아야 함
WHERE mdate >= '2020-11-01'::timestamp AND mdate < '2020-11-06'::timestamp + interval '1 day'

--> 앞으로 고민 해 봐야 할것

between 을 사용하고 싶은데... + interval '+1day -1second' 이렇게 해도 되긴되는데 

Posted by 비니미니파파
Database/PostgreSQL2019. 7. 31. 16:16

psql 실행 후 원하는 테이블을 조회하면서 csv 파일로 복사한다.

copy (select * from 테이블명) to '/원하는경로/result.csv' with csv 

끝이다.

=# copy (SELECT * FROM table_demo) to '/home/demo/table_demo_data.20190731.csv' with csv
Posted by 비니미니파파
Database/PostgreSQL2019. 7. 31. 16:09

* CentOS 에서 기본으로 postgresql 가 설치되어있는지 확인한다.

~]# rpm -qa | grep postgres
postgresql-docs-9.2.24-1.el7_5.x86_64
postgresql-libs-9.2.24-1.el7_5.x86_64
postgresql-9.2.24-1.el7_5.x86_64
postgresql-server-9.2.24-1.el7_5.x86_64

* 설치된 것이 있다면 삭제 한다.

~]# yum remove postgresql*

* PostgreSQL 11 버전을 설치 하기 위해서는 Yum repository 를 업데이트 해야 한다.

~]# rpm -Uvh https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm 

* PostgreSQL 11 을 설치 한다.

~]# sudo yum install -y postgresql11-server postgresql11-contrib 

postgresql11-server : PostgreSQL 11 Database Server
postgresql11-contrib : 추가 지원 모듈

주의! 설치 후 최초 Database 를 생성 해야 한다 !

~]# /usr/pgsql-11/bin/postgresql-11-setup initdb 


* 서비스 등록 및 실행 

~]# systemctl start postgresql-11 
~]# systemctl enable postgresql-11 

* 서비스 상태 확인

~]# systemctl status postgresql-11 


* 관리자 passsword 변경

~]# su - postgres -c 'psql' 
=# ALTER USER postgres PASSWORD '변경할비밀번호'; 

-- postgres 사용자 권한으로 psql 명령어 실행 

* 외부 접속 허용

~]# vi /var/lib/pgsql/11/data/postgresql.conf  

-- 중략 --
listen_addresses = '*' 

-- 중략 --

 

~]# vi /var/lib/pgsql/11/data/pg_hba.conf 

-- 중략 --

host      all             all         0.0.0.0/0      md5 


* 외부 접속 허용 후 서비스를 Restart 해 줘야 한다.

~]# systemctl restart postgresql-11 


* 방화벽 허용

~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp 
~]# firewall-cmd --reload
Posted by 비니미니파파
Database/PostgreSQL2019. 4. 16. 17:56

PostgreSQL 프로시져 를 구현 하고자 할때 Function 을 만들어 사용한다.

(최신버전 11 부터는 procedure 를 지원한다.)

결과가 없는 Function을 실행 할 때에는 select 대신 PERFORM 을 사용하자.

PERFORM FUNCTION_NAME();

결과가 있는 Function 이라면 당연히 select 를 사용한다.

SELECT FUNCTION_NAME();

 

Posted by 비니미니파파