Category: SQL

  • 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 구조를 포함하여 모두 날림. 회복 불능.

  • psql import

    pgAdmin이 편한 툴이기는 하지만 파일을 import 할 때에 일일이 해주어야 하는 심각한 불편함이 있었다. 뭔가 방법이 있을 것 같아서 psql을 이용해 보기로 하였다. 문법을 전혀 모르는 관계로 pgAdmin에서 자세히 보기로 나오는 쿼리를 기반으로 하여 구글링을 한 끝에 쉽게 하는 방법을 확보할 수 있었다.

    copy sample.t40 ("KEY_SEQ", "SEQ_NO", "RECU_FR_DT", "DSBJT_CD", "SICK_SYM") FROM 'D:/NHIS/postprocessing/40/nhid_gy40_t1_2013.csv' CSV HEADER;

    QUOTE나 ESCAPE 설정을 변경해야 한다면 다음과 같이 입력해준다.[‘]과 [”]의 구분에 유의.

    copy cdm.condition (condition_occurrence_id, person_id, condition_concept_id, condition_start_date, condition_end_date, condition_type_concept_id, stop_reason, provider_id, visit_occurrence_id, condition_source_value, condition_source_concept_id, dx_codetype, pdx) FROM '/home/byun1114/Downloads/condition-2012-2019.csv' DELIMITER ';' CSV HEADER QUOTE '"' ESCAPE '"';

    csv 파일의 column 순서와 위에 언급된 column의 순서를 일치시키는 것이 필요하다. 알아서 바뀐 위치에 넣어주겠지하고 방심하고 있다가 오류가 생기면 골치 아프다.

    여러 개의 파일에 같은 작업을 반복하고 싶으면 여러개의 쿼리를 한 번에 Ctrv+V로 입력하면 순차적으로 실행된다.

    도스창에서도 하는 방법이 있을 것 같은데 계속 오류만 나서 그냥 이 방법으로 해결하기로 했다. 우선 몇 개 테스트해보니 잘 되는 것을 확인해서 다시 파일 작업 후 importing 작업을 할 예정.

  • import는 csv

    DB에 자료를 넣고 있는 중인데 TSV형식보다는 CSV형식이 클릭 한 번을 더 할 수 있고, header 정보도 뺄 수 있어서 훨씬 좋은 듯 하다. 일단 txt 파일을 csv로 변환하는 작업과 누락된 값을 결측치로 채워 넣는 작업을 하는 것, 그리고 table의 column을 동일한지 확인하고, column 순서를 맞추는 작업, 그리고 importing이 편하도록 적당히 묶어서 csv 파일을 만들도록 작업을 시켰다. 연휴 끝나고 확인해 보면 될 것 같다.

    오늘은 연휴라서 그런지 정말 사람들이 없었다. 출근길 때는 잘 몰랐는데 퇴근길을 정말로 차가 없어서 빨리 올 수 있었다.

    딸은 결국 엄청 늦게 일어나서 유치원에 안갔다.