Author: byun1114

  • select 응용하기

    vocabulary 테이블을 만들어야해서. 겨우겨우 방법을 찾을 수 있었다. 그런데 알고 봤던이 CDM의 vocabulary 는 이렇게 만드는 것이 아니었다. 내가 필요했던 것은 3가지 였다. 처음은 2개의 테이블에서 공통 key를 이용해서 새로운 형식의 테이블을 만드는 것, 새로운 컬럼을 추가하는 것, 그리고 여러개를 합치는 것이었다.

    일단 공통의 컬럼 값으로 구성되어 있으면 union으로 합칠 수 있다.

    특정한 값을 가진 새로운 컬럼을 추가하는 것은 있던 컬럼을 select 하면서 ‘DRUG_KOREA_EDI_ATC’ as vocabulary_name 이런 식으로 그냥 값을 입력해 주면 된다.

    2개의 테이블의 공통인 정보를 이용하여 합치는 것은 join을 이용하면 된다.

    cdm.drug_mapping as a join cdm.drug_atc_mapping_2 as b on a.atc_code = b.concept_code
    CREATE TABLE cdm.vocabulary AS
    (select edi_code as vocabulary_id, 'DRUG_KOREA_EDI_ATC' as vocabulary_name, 'HIRA_AND_ATHENA' as vocabulary_reference, NULL as vocabulary_version, concept_id as vocabulary_concept_id from cdm.drug_mapping as a join cdm.drug_atc_mapping_2 as b on a.atc_code = b.concept_code)
    union
    (select concept_code_re as vocabulary_id, 'DISEASE_KCD7_SNOMED' as vocabulary_name, 'ATHENA' as vocabulary_reference, NULL as vocabulary_version, concept_id_2 as vocabulary_concept_id from cdm.condition_mapping as a join cdm.condition_kcd7_snomed_2 as b on a.concept_id = b.concept_id_1)
    union
    (select distinct measurement_source_value as vocabulary_id, 'HUDH' as vocabulary_name, 'ATHENA' as vocabulary_reference, NULL as vocabulary_version, measurement_concept_id as vocabulary_concept_id from cdm.measurement order by vocabulary_id);
  • PostgreSQL 자료파일 위치 변경

    구형 PC에서 DB를 운영하는 것도 좋지만 빠른게 좋은 것이다. 그렇다고 NMVe에 설치를 하자니 다른 작업에 영향을 미칠까봐 걱정되었다. 그래서 PostgreSQL를 설치는 그대로 하면서 자료 파일만 다른 곳에 저장하려고 했다. 그래서 postgresql.conf 파일을 수정을 했는데 자꾸 오류가 생겼다. 여러 곳을 찾아본 결과 data 폴더를 그냥 만들면 안된다는 것을 알게 되었다. 공식 문서를 통하여 방법은 알게 되었는데, PATH에 문제가 있는지 PostgreSQL의 createuser 명령어가 실행이 안되었다. find 를 이용한 단순한 방법으로 폴더의 위치를 찾았고 이를 통하여 자료 폴더를 생성할 수 있었다. 다만, 권한이 중요한데 700(?)으로 해야 한다.

    www.postgresql.org/docs/12/creating-cluster.html

  • for

    Windows 에서 특정 폴더 이하의 특정 파일에 대하여 특정 명령어를 수행해야 할 때.

    for /r %i in (*.pdf) do xcopy /y “%i” d:\temp\

  • 보통 MySQL에 대하여 문제 해결책을 찾다 보면 MySQL을 서버에서 돌리는 방식으로 운영하기 때문에 local 프로그램이 접속하는 것을 전제로 각종 설명들이 되어 있다. 하지만 그렇지 않다면 MySQL의 설정을 추가로 해주어야 한다.

    CellProfiler에서 결과를 DB로 보내주는 것이 있길래 방법을 알아보았다.

    리눅스 창에서 sudo mysql -u root 로 접속한다.

    database를 만들어 준다.
    create database cellprofiler;
    show databases; 로 확인.

    계정(cell)을 만들어주어야 한다.그냥 만들면 caching_sha2_password와 관련된 오류 메세지가 나온다. 따라서 별도의 옵션을 이용하여 계정을 생성한다. %는 외부 IP에서 접속할 때를 의미하는 기호라고 한다. 0.0.0.0 이라고 해봐야 안된다.
    create user ‘cell’@’%’ identified with mysql_native_password by ‘cell’;

    cell 계정에 모든 권한을 부여한다. 나만 사용하니까 이렇게 해도 부담없다.
    grant all privileges on *.* to cell@’%’;

    마지막으로 /etc/mysql/mysql.conf.d/mysqld.cnf 파일에서
    bind = 127.0.0.1 을 주석처리 한다.