Category: SQL

  • Postgrest

    postgrest 를 사용할 때 table 의 컬럼이 중간에 변경되었으면, 재시작 해주어야 한다. 이거 몰라서 한참 해맸다.

  • Primary key

    CREATE TABLE t1 (id integer primary key generated always as identity);
    
  • SNOMED 코드 치환

    Athena 에서 SNOMED 코드를 검색하면 편하다. 링크를 타고 다른 것들도 검색해 볼 수 있다. 그런데 검색을 하면 시간이 많이 소요된다. 이럴 경우에는 SNOMED 파일을 받아서 직접 검색을 하면 빠르다. 이렇게 vocabulary 파일을 받아서 DB에 import 할 경우 다음 사항을 고려해야 한다.

    • CSV가 아닌 TSV로 파일이 생성된다. 수 많은 콤마가 있는 것을 고려하면 당연한 것이다.
    • 겹 따옴표와 홑 따옴표가 모두 사용된다. 이것은 import 과정에서 예외 처리에 영향을 미쳐서 불완전하게 데이터가 들어온다.

    concept_name에서 따옴표는 대세에 영향을 주지 않기 때문에 삭제한 후 import 시키도록 한다.

    sed -i "s/\"//g" CONCEPT.csv
    sed -i "s/\'//g" CONCEPT.csv
  • 세션 종료

    PostgreSQL에서 일정 시간 사용하지 않는 세션을 종료하는 방법은 다음과 같다고 한다. 주기적으로 실행시키기 위해서는 해당 명령을 실행할 수 있도록 cron 에 등록시켜서 하면 된다.

    SELECT pg_terminate_backend(pid)
    FROM pg_stat_activity
    WHERE state = 'idle'
          AND state_change < now() - '15min'::interval;