2015-02-03 2 views
1

pgAdminIIICOPY 명령을 사용하여 csv 파일로 쿼리를 내보내려고합니다.Postgres COPY to CSV

내가이 명령을 사용하고 있습니다 : 다음

grant all privileges on train to public 

과 :

ERROR: could not open file "C:\me\train.csv" for writing: Permission denied 
SQL state: 42501 

내가 다음 psql의에서 다음을 사용하여 시도 :

COPY (SELECT CASE WHEN cast(click as int) = 1 THEN 1 
    ELSE -1 
    END 
    || ' ' 
    || id 
    || '|' 
    || 'hr_' || substring(hour, 7,8) 
    --|| ' dw_x' + substring(datename(dw, substring(hour,1,6)),1,2) 
    || ' |dw_' || substring(to_char(to_date(substring(hour, 1,6),'YYMMDD'), 'dy'),1,2) 
    || ' |C1_' || c1 
    || ' |C21_' || c21 
    || ' |C22_' || substring(to_char(to_date(substring(hour, 1,6),'YYMMDD'), 'dy'),1,2) || '_' || substring(hour, 7,8) 
    AS COL1  
    FROM clickthru.train limit 10)  
    TO 'C:\me\train.csv' with csv; 

를 내가 얻을 그것을 실행할 때 \ z를 사용하여 액세스 권한을 확인하십시오.

enter image description here

그러나 여전히 동일한 오류가 발생합니다. Windows 7 상자에서 postgresql 9.4를 사용하고 있습니다. 다른 제안?

답변

0

copy은 Postgrs 서버 프로세스 (서버 측 작업)의 사용자 계정으로 파일을 씁니다.

From the manual:

이 파일은 PostgreSQL의 사용자가 액세스 할 수 있어야합니다 (사용자 ID는 서버로 실행)와 이름은 서버의 관점에서 지정해야합니다

에서 Windows는 기본적으로 시스템의 "네트워크 계정"입니다.

분명히 그 계정에 해당 디렉토리에 대한 쓰기 권한이 없습니다.

당신은 두 가지 그 해결의 방법이 : 대신 모두 전체 액세스

  • (psql에서) 클라이언트 측 \copy 명령을 사용을 허용하는 디렉토리에

    1. 변경 권한을
  • 관련 문제