본문 바로가기
DB/RDBMS

[PostgreSQL] COPY 사용 불가 (SQL Error 42501)

by 소라둥이 2020. 4. 27.

대용량 데이터 복사 시 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를 사용하면 된다는 뜻이다.

 

psql 사용을 위해 SQL Shell(psql)을 설치 한다.

SQL Shell(psql) : PostgreSQL의 Command Line Interface

 

설치 후 DB 정보를 입력하여 연결한 후

\copy [스키마.테이블명] from [파일 경로] delimiter [구분자] 형식으로 실행 하면 정상적으로 동작한다.

 

만약 데이터 Import가 아닌 Export를 원한다면

\copy [스키마.테이블명] to [파일 경로] delimiter [구분자] 를 사용하면 된다.