Category: SQL

  • UPDATE REPLACE

    ‘해당없음’이라는 값을 빈 칸(“”)이나 다른 문자로 바꾸는 방법은 다음과 같다.

    UPDATE cdm_v2.measurement SET measurement_date=REPLACE(measurement_date, ' 해당없음', '');

    그런데 이것보다는 NULL로 바꾸고 싶다면 다음과 같이 하면 된다.

    UPDATE cdm_v2.measurement SET measurement_id=NULL WHERE measurement_id ='해당없음';

    measurement_source_value의 전방일치로 measurement_concept_id를 3013721로 바꾸는 방법은 다음과 같다.

    update cdm_v2.measurement set measurement_concept_id=3013721 where measurement_source_value like 'B2570%'

    이것은 이해하는데 좀 시간이 걸렸다. cdm_v2.measurement를 a로 정하고, cdm_v2.measurement_concept를 b라고 한다. a의 measurement_source_value 와 b의 measurement_source_value 가 같다면, measurement_concept_id를 a로 바꾸는 것이다.

    update cdm_v2.measurement as a set measurement_concept_id = b.measurement_concept_id from cdm_v2.measurement_concept as b where a.measurement_source_value = b.measurement_source_value;


  • INTERSECT

    두 조건을 모두 만족하는 결과를 찾을 때에는 intersect를 사용함. 사용 방식은 다음과 같음.

    SELECT "PERSON_ID" FROM hemodialysis.person_id1 INTERSECT SELECT "PERSON_ID" FROM hemodialysis.person_id2
  • postgreSQL

    pgAdmin으로 접속
    postgresql.conf
    connection settings 부분에서
    listen_address = ‘*’ 로 수정

    pg_hba.conf
    #IPV4 connection 부분에서 127.0.0.1 이후 부분을 0.0.0.0/0 로 수정. md5 는 유지

    postgres 비빌번호 설정
    리눅스 bash 창에서 다음을 입력.
    sudo -u postgres psql postgres
    psql 로 들어 오면 “\password postgres”

    이제 sudo -u postgres psql postgres로 psql 접속할 수 있음.

    데이터베이스 목록 조회
    psql 접속 후 실행 \list 또는 \l

    데이터베이스 연결
    psql 접속 후 실행 \connect 데이터베이스명 또는 \c 데이터베이스명

    role “root” does not exist 란 오류
    createuser 명령어를 실행하여 계정을 생성해준다. PostgresSQL 명령어이다.

  • truncate vs. delete vs. drop

    건보공단 자료를 다루는 중인데 import 과정에서 오류가 나면 오류를 해결하고 다시 import 과정을 한다. 그런데 오류가 난 테이블은 일단 내용을 삭제하고 다시 import 하는게 안전하다고 생각해서 delete from 을 이용해서 삭제하는데 이게 속도가 너무 느렸다. 그러다가 인터넷에서 검색을 해보았다.

    내가 필요한 기준에 의해서 정리해 봄.

    delete는 rollback이 가능한 장점이 있음. 선택적으로 삭제 가능.

    truncate는 column 구조를 유지하면서 자료를 모두 날림. 회복 불능.

    drop은 column 구조를 포함하여 모두 날림. 회복 불능.