Category Archives: 05_SQL

CAST

자료 미리 하게 어야 다고 . Vital 보니 그게 한지 . 마다 , ‘.’, ‘-‘으로 여러 으로 하고 . 수가 수가 우도 , 역시 려가 하다.

하지 CAST .

CAST(VS_PULSE_RATE AS NUMERIC)

빈 칸을 NULL로 치환하기

CDM 구축하는 과정에서 파악한 것으로 vital sign 측정 결과를 입력할 때 다른 항목을 입력하지 않으면 공란으로 처리가 된다는 것 이다. Vital sign을 measurement 테이블에 넣는 과정에서 빈 칸을 그대로 두면 DB 사이즈가 굉장히 커지게 된다. 따라서 공란이 있으면 제거하는 과정이 필요하다. 빈 칸을 찾는 방법 중 하나는 trim과 length를 이용한 것이다. 빈 칸은 trim 을 거 치면 빈 칸에 대한 정보가 소실되게 되고 길이로 바꾸면 0이 된다.

UPDATE cdm.vital SET vs_height=NULL WHERE LENGTH(TRIM(vs_height))=0;

Measurement 테이블에 결과를 합칠 때에 다음을 추가하면 값이 있는 항목만 선택되게 된다.

WHERE vs_height IS NOT NULL

psql 스크립트 실행

psql 명령어를 통해서 스크립트를 실행시키는 것은 생각보다 쉽다.

sudo -u postgres psql -a -d [DB이름] -f [스크립트]

-a는 결과 보여주기(echo)이다.

count

특정값이 몇 개 있는지는 count 명령어를 이용하면 되는데 자꾸 숫자만 나오고 어떤게 있는지는 나오지 않았다. 인터넷 서핑을 통해서 찾아본 방법은 다음과 같음. select 뒤에 한 번 써주고, 마지막에 group by 에 또 써주고.

select drug_source_value_edi_code, count(*) from cdm.drug_exposure where drug_source_value_edi_code in (...) GROUP BY drug_source_value_edi_code;

pg_dump

단일 데이터베이스 백업 (스키마 단위 아님)은 pg_dump를 이용하면 간단히 할 수 있다. 다만 나의 경우에는 sudo -u postgres pg_dump 로 실행했는데 이러면 생성된 파일이 권한 문제가 생길 수 있다. 따라서 저장할 폴더 권한을 777로 편하게 미리 바꾸어 둔다.

pg_dump [데이터베이스] > [백업할 파일 이름]

복원은 다음과 같이 할 수 있다. 인터넷 정보에 의하면 이럴 경우 오류가 생기더라도 일단 진행된다고 한다. [데이터베이스]는 미리 생성되어 있어야 한다.

psql [데이터베이스] < [백업한 파일 이름]