오늘은 Postgresql에서 Join query를 Update하는 방법에 대해서 포스팅 하려고 합니다. 단순하게 query문을 join 하거나 단일 table의 데이터를 update 하는것은 간단하지만 join해서 조회된 데이터를 update하는것은 저도 고민을 하다가 했기 때문에 글을 작성하게 되었습니다. 간단하게 아래 예제를 먼저 보도록 하겠습니다. UPDATE ANIMAL_INS AS AIN SET DATETIME = now() FROM AINMAL_OUTS AS AOUT WHERE AOUT.NAME IS NULL AND AIN.NAME IS NOT NULL AND AIN.ANIMAL_ID = AOUT.ANIMAL_ID update 와 set 구문까지는 일반적으로 사용하는 query 이지만 추가적..
PostgreSQL
오늘은 Postgresql table column 정보 조회 방법에 대해 포스팅 하려고 합니다. table column은 간혹 column에 대한 size 또는 data_type를 확인하고 싶을때 자주 사용합니다. DataBase tool이 있다면, 명령어를 확인하지 않고 간단하게 확인할 수 있지만, tool을 사용하지 못하는 TUI 환경 또는 Linux 환경에서는 DataBase query를 통해 확인해야 하기 때문에, 아래 내용과 같이 실행을 하면 정보를 확인 할 수 있습니다. column_name(컬럼 이름), data_type(컬럼 타입), character_maximum_length(컬럼 길이) 이외에도 많은 정보들이 들어 있는데, 확인 하고 싶으시면 select 에 * 로 확인하시면 됩니다. ..
오늘은 Postgresql DB의 value too long for type character varying 이슈에 대한 해결 방법에 대해 포스팅 하려고 합니다. value too long for type character varying 오류가 나타나는 현상은 database에 특정 값들을 insert 또는 update하려고 할 때 나타납니다. 예를 들어, 특정 값에 대한 column의 max 길이가 10자리인데 실제 insert 또는 update 하려는 값의 길이가 11자리 이상일때 나타난다고 보시면 됩니다. 이 문제를 해결하기 위해서는 일반적으로 database의 column의 길이를 늘려주면 됩니다. 저는 Postgresql로 변경하도록 하겠습니다. database마다 명령어는 조금씩 다를 수 있기..
오늘은 Linux에서 postgresql 12 버전에 대한 설치 및 업그레이드 방법에 대해 포스팅 하려고 합니다. 먼저 Postgresql이 기존 Linux에서 설치가 되어있다면, 제거하고 재설치 하는 방법으로 진행하겠습니다. (* 업그레이드가 아닌 설치만 하시는 분들은 5)의 내용부터 진행하시면 됩니다.) 1) 기존의 Postgresql 서비스 중지 # systemctl stop postgresql-9.6 # systemctl disable postgresql-9.6 2) 기존의 Postgresql 데이터 삭제 # rm -rf /var/lib/pgsql 3) 기존의 Postgresql 계정 제거 # userdel postgres 4) 기존의 Postgresql 패키지 제거 # yum remove *po..
오늘은 Postgresql DB에서 사용자 추가 및 Role 권한 관리에 대해 포스팅 하려고 합니다. 1. DB 계정 및 Role 권한 확인 먼저 Linux에서 posgresql DB에 접근합니다. # sudo -u postgres psql postgres \du 명령어를 사용하여 현재 Postgresql DB의 계정 및 Role 권한 정보를 확인합니다. postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------------------+----------- clovir | Superuser | {} postgres | Superuser, Cre..
오늘은 리눅스(Linux)에서 쉘 스크립트(shell script)를 이용하여 PostgresqlDB query 실행하는 방법에 대해 포스팅 하려고 합니다. vi 편집기로 쉘 확장자(.sh)의 파일을 생성 및 편집합니다. vi testdb.sh 내용에 간단한 조회에 대한 아래와 같은 구문을 넣어보겠습니다. su - [DB계정] -c 'psql -d [DB명] -c [query]' su - postgres -c 'psql -d "clovirvdi_multi_nic" -c "select * from cr_vcenter"' 저장을 하고 스크립트를 실행하면 쿼리에 대한 결과를 확인 할 수 있습니다. ./testdb.sh [root@clovirvdi scripts]# ./testdb.sh vcenter_seq |..
리눅스(Linux)에서 DB설정 또는 쿼리나 특정 명령어를 실행하려고 할때 아래 그림과 같이 Postgresql인증 오류가 나타날 수 있습니다. 패스워드가 일치 하더라도 종종 발생하기도 합니다. 해결책으로는 인증 방식을 바꾸도록 해야합니다. 아래 그림과 같이 cd /var/lib/pgsql/9.6/data/ 로 이동하여 vi pg_hba.conf 명령어를 통해 파일을 수정 하도록 합니다. (단, 경로는 설치경로에 따라 다를 수 있기 때문에, 저와 다른 위치에서 pg_hba.conf 파일을 찾아야 할 수 있습니다.) local type peer -> md5 으로 수정합니다. postgresql 서비스를 재시작 합니다. service postgresql restart 앞전에 진행했던 명령어 실행후 오류 없이..
오늘은 Linux 안에 있는 Postgresql DB의 백업 및 복구 방법에 대해 알아보도록 하겠습니다. 1) Postgresql DB 권한있는 계정으로 로그인 su postgresql 2) Postgresql DB를 백업 DB를 백업하는 과정은 여러가지가 있지만 2가지 정도만 보겠습니다. (1) 특정 하나의 DB만 백업 // /usr/bin/pg_dump [DB명] > [백업위치]/[백업파일 이름] /usr/bin/pg_dump clovirvdi > /var/lib/postgresql/backup/clovirvdi_190806.sql (2) 전체 DB 백업 // /usr/bin/pg_dumpall > [백업위치]/[백업파일 이름] /usr/bin/pg_dumpall >/var/lib/postgresql..