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