기존에 쓰던 postgresql과 달리 oracle은 사용법이 달라 기록한다

1.Postgresql

SELECT * FROM TEST_TABLE A 
WHERE A.COLUMN LIKE CONCAT( '%' , #{param.column} , '%')

2.Oracle

SELECT * FROM TEST_TABLE A WHERE A.COLUMN LIKE '%'||#{param.column}||'%'

 

eXERD는 이클립스가 개발한 모델링 도구이다

워크스페이스 구조로 되어있어 원하는 경로에 프로젝트를 새로 만들어 프로젝트내에서 관리 된다

사용방법은 생성 한 프로젝트에 exerd 파일을 생성해주고 모델링한다

직관적으로 다이어그램으로 DB모델링을 할 수 있어 초보자들도 쉽게 DB를 관리할 수 있는 도구이다

 

비식별관계

-테이블간의 릴레이션쉽을 맺을때 부모테이블의 고유키를 자식테이블의 fk로 관계를 맺어준다

식별관계

-테이블간의 릴레이션쉽을 맺을때 부모테이블의 고유키를 자식테이블의 fk로 관계를 맺어주고

컬럼을 그대로 자식테이블에도 생성한다

식별관계는 부모테이블과 자식테이블이 동일한 컬럼을 갖게된다.

 

또한, 엔티티를 구성할 때 논리적모델링과 물리적모델링을 한번에 처리하여 복잡한 DB 설계를 간단하고

이해하기 쉽게 인스턴스를 생성할 수 있다.

계정 생성 및 권한

 

1.유저생성

$ sudo -u postgres createuser <username>

 

2.유저 로그인

$ sudo su - postgres

 

3.Postgresql 환경에 진입

$ psql

psql (11.5 (Ubuntu 11.5-1.pgdg18.04+1))

Type "help" for help.

 

4.유저 패스워드 지정

postgres=# alter user <username> with encrypted password '<password>';

 

5.데이터베이스 전체 권한 부여

postgres=# grant all privileges on database <dbname> to <username> ;

 

데이터베이스 생성 및 복원

 

1.데이터베이스 생성

postgres=# CREATE DATABASE <dbname>;

 

2,데이터베이스 조회

postgres=# \list

 

3.데이터베이스 삭제

postgres=# DROP DATABASE <dbname>;

 

4.(필요하다면 실행) 백업한 데이터베이스 복원

psql -f [백업파일이름].sql [복구할DB명]

 

Postgresql 접속권한

 

1.외부접속허용

1.//listen_addresses 주석해제 및 localhost를 > '*'로 수정
sudo vim /etc/postgresql/12/main/postgresql.conf

2.//local의 peer를 md5로 ipv4 local connection peer를 md5 address를 0.0.0.0/0 으로 수정
sudo vi /etc/postgresql/12/main/pg_hba.conf

3.//서버에 변경사항을 반영하기 위해 정지 후 시작
/etc/init.d/postgresql stop
/etc/init.d/postgresql start

4.//5432포트가 0.0.0.0:5432로 바뀌었다면 외부접속이 가능
netstat -ntlp

 

계정 비밀번호 수정

https://nirsa.tistory.com/257 참고

회사명으로 정렬하려하는데 replace를이용해 회사명에 붙은 (주)를 제외하고 정렬하려한다

select

        replace(컬럼명, '(주)', '')  as orbycolumn

from 회사테이블

order by orbycolumn;

 

쿼리를 실행했지만 원하는 데이터가 나오지 않았다

ㄱ이맨위로와야하는데 ㄷ이 맨위로오고 데이터가 뒤죽박죽이였다

문자열정렬에 이슈가 있나 하고 DataBase collate를 조회해보았다

 

SHOW lc_collate

 

쿼리 실행을 한 결과 collate가 en_US.utf8 로 설정되있다

DataBase 생성을 할 때 따로 명시하지않아 자동으로 잡은모양이다.

정렬할 Column의 collcate를 수정해주면 된다

 

ALTER TABLE company ALTER COLUMN COMPANY_NAME SET DATA TYPE character varying(255) COLLATE "ko-KR-x-icu"

 

쿼리 실행 후 다시 조회해보았더니 원하는대로 데이터가 정렬되었다.

 


특정 Column에 대한 collate만 수정을 한 것이기 때문에 DataBase를 생성할 땐 collate도 설정해야겠다

ALTER TABLE company_group ALTER COLUMN company_group_no TYPE smallint using company_group_no::SMALLINT;

Thymeleaf로 DataList를 가져와 화면에 출력했더니 null값을 기준으로 화면에 값출력이 안된다

화면단에서 처리를 하려했는데 데이터자체가 null값이여서 쿼리를 수정하기로 했다

//COALESCE() 함수는 왼쪽에서 부터  '조회 할 COLOUM명' 에 대해 스캔하고 

//결과값이 NULL이면 치환할 값을 반환한다

//쿼리문은 임의로 작성한 결과이다

SELECT 

COALESCE('조회 할 COLOUM명', '치환할 문자') AS DBNAME 

FROM TABLE

//COALESCE 함수 내에서 'Select문'을 삽입해서 처리하는 방법도 있다

SELECT 

COALESCE(

'SELECT NAME 

FROM USER_INFO AS UL

WHERE 'UL.비교값'='TB비교값' , '치환할 값') AS NAME 

FROM TABLE AD TB

heidisql로 데이터가 정리된 CSV파일을 import하려한다

CSV파일이 있는 경로를 지정하고 목적지 아래에 데이터를 넣을 데이터베이스와 테이블을 지정한다

그리곤 하단에 있는 가져오기 버튼을 누르는데 Incorrect string value~라는 에러 메세지가 뜬다.

서치를 해보니 UTF-8 설정하지 않아서 나는 에러메세지라고 했다.

데이터베이스와 테이블을 만들때 기본 언어설정을 아래 명령어로 처리한다

alter database 데이터베이스명 default character set utf8;

alter table 테이블명 convert to character set utf8;

 

기존에 있던 데이터베이스와 테이블 설정을 변경했다

그리고 나서 다시 Insert를 했더니 똑같은 오류발생 

 

Mysql 설정을 조회해보니 정상적으로 UTF-8 로 설정되있다

설정은 제대로  됬고 데이터베이스와 테이블도 수정했지만 Import 에 계속 오류메세지가 떳다.

결국 문제해결은 다른방법으로 하였다.

 

 

CSV파일을 일반 텍스트파일로 읽고 다른이름으로 저장한뒤 heidiSql에서 텍스트파일로 가져왔다.

인코딩은 반드시 UFT-8 로 설정한다

 

 

다시 Select 를 해보니 한글이 깨짐없이 나오고 데이터도 정상적으로 삽입됐다

 


에러메세지 발견 후 서치를 통해 설정을 변경 해도 소용없었는데 간단한 방법으로 문제해결을 하였다

다음번에도 이런일이 생기면 참고해서 해결해보면 될 것같다

+ Recent posts