본문 바로가기

PostgreSQL4

[PostgreSQL] 컬럼명(Alias)을 대문자로 출력하는 방법 (MyBatis) 현재 MyBatis에 Oracle로 개발되어 있는 부분을 PostgreSQL로 변경중이다. 아래와 같은 쿼리가 있었는데 select id as ID, pw as PW from tbl_member 그냥 컬럼을 읽어오거나 AS를 사용해도 컬럼명 결과값이 항상 소문자로 출력되었다. 이미 대문자로 사용중인 로직들을 변경하기에는 너무 일이 커지기에 방법을 찾아보았는데 1. MyBatis의 resultMap을 사용한다. 2. Alias를 쌍따음표로 작성한다. select id as "ID", pw as "PW" from tbl_member 간단히 작성하기에는 쌍따음표가 괜찮아 보인다. 2020. 4. 29.
[PostgreSQL] 트랜잭션 사용하기 PostgreSQL에서 트랜잭션 작업 시 해당 작업 앞뒤로 BEGIN과 COMMIT을 사용하면 된다. ex) BEGIN; SELECT * FROM TBL_MEMBER; DELETE FROM TBL_MEMBER WHERE 1=1; COMMIT; BEGIN과 COMMIT 사이의 영역을 트랜잭션 블록이라 부름. 필요시 ROLLBACK TO [원하는 지점] 으로 ROLLBACK도 가능하다. ex) MEMBER 테이블의 id가 user123인 컬럼을 지우려고한다. 실수로 전부 다 지워서 다시 세이브포인트로 롤백한 후 이후 남은 작업을 진행한다. BEGIN; SELECT * FROM TBL_MEMBER; SAVEPOINT my_savepoint; ----------------------- 3번 DELETE FROM.. 2020. 4. 29.
[PSQL] COPY 작업 시 유용하게 사용했던 명령어 및 설정 앞서 포스팅한대로 COPY작업 자체는 잘 된다. 하지만 생각지도 못한 부분에서 많은 문제가 발생했다. 1. 한글깨짐 역시나 한글 깨짐 방지는 필수인것 같다. copy 실행 전 SQL Shell의 인코딩을 UTF-8로 변경하면 된다. set client_encoding to 'UTF8'; 2. 구분자 문제 나 같은 경우는 MSSQL에서 데이터를 CSV로 생성 후 PSQL에서 COPY했다. 이때 구분자를 ,을 이용하였는데 데이터 안에 해당 구분자가 들어 있다면 데이터의 , 마저도 구분자로 인식하여 데이터를 컬럼단위로 잘라버렸다. 즉 원래 컬럼이 10개라면 11개가되는 현상이 발생, 정상적으로 실행이 안된다. 이전 포스팅에서 설정한 delimiter 옵션을 이용하여 구분자를 \t, ; 등 상황에 맞게 변경해서.. 2020. 4. 27.
[PostgreSQL] COPY 사용 불가 (SQL Error 42501) 대용량 데이터 복사 시 CSV파일 형태로 저장 후 COPY 명령어를 통해 읽어온다. 하지만 PostgreSQL에서 COPY를 사용하면 must be superuser to copy to or from a file 이라는 에러와 함께 실행되지 않는 경우가 있다. 에러를 보면 파일 접근 관련 권한 문제로 보이는데 로컬 환경에만 작업한다면 괜찮지만 따로 분리된 다른 서버의 DB 사용 시 파일 접근 권한 문제를 마음대로 변경할 수 없다. 따라서 다른 방법을 찾아야만 했는데 다행히 에러문구 밑에 힌트가 적혀있었다. Hint : Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone. 즉, psql의 \copy를 사용하면.. 2020. 4. 27.