I.K.Picture & IT Info.

PostgreSQL 조인 (Inner Join) 및 CSV 저장 본문

Development/Database

PostgreSQL 조인 (Inner Join) 및 CSV 저장

helpful-intruder 2020. 6. 30. 14:47
반응형

여러 테이블이 있고 테이블 간 외래키.. 또는 연계되어 있는 필드 값들이 있을 때 

두 테이블을 조인해서 쿼리를 보내고 해당 내용을 바로 csv 파일로 출력할 수 있습니다. 

 

아래 A 테이블 과 B테이블 2개가 있다고 생각할께요.

 

A 테이블

id name addr floor_id
1 시청역 블로구 1
2 을지로입구역 서봉구 2

B 테이블

id floor_id name info
1 1 지하 1층 지하 입구 근처
2 1 지하 2층 플랫폼
3 2 지하 1층 지하 입구 근처

 

이랬을 때 일반적으로 검색하는건 이렇죠

 

Query

   >> SELECT * FROM A;

   >> SELECT * FROM B;

 

근데 제가 A 테이블에 있는 floor_id 값과 B 테이블에 있는 floor_id 값을 조인하여 같이 출력하고 싶은 거죠 

 

그랬을 때 주위해야되는 것 중에 하나가 기존 * 했던 부분을 직접 출력할 내용을 명확하게 정해줘야합니다. 

  SELECT A.id, A.name, A.addr, B.name, B.info FROM A 

       inner join B on A.floor_id = B.floor_id;

 

이렇게 쿼리를 작성하면 아래와 같이 나옵니다. 

id name addr name info
1 시청역 블로구 지하 1층 지하 입구 근처
1 시청역 블로구 지하 2층 플랫폼
2 을지로입구역 서봉구 지하 1층 지하 입구 근처

 

이러한 결과를 내가 바로 CSV로 처리하고 싶다.

라고 하면

Copy 명령어를 사용하면됩니다. 

 

Copy(쿼리) TO '저장할 csv 파일 위치' with CSV delimiter ',';

 

참고로 저장할 csv 파일 위치는 PostgreSQL이 설치된 컴퓨터의 위치입니다. 

고로 원격 형태로 PostgreSQL을 연결하고 있다면 해당 부분을 참고해야겠죠?

 

AA 서버에 PostgreSQL이 설치되어 있고 BB 클라이언트에서 접속하고 쿼리를 실행한다는 가정하에 

저장할 csv 파일 위치는 AA 서버에 대한 위치를 작성해야된다는 것 입니다. 

위 쿼리를 CSV를 작성한다는 가정하 예를 작성해보겠습니다.

 

Copy(SELECT A.id, A.name, A.addr, B.name, B.info FROM A inner join B on A.floor_id = B.floor_id) 

     TO 'D:\test.csv' with CSV delimiter ','; 

 

 

반응형
Comments