2014-06-11 2 views
1

저는 PostgreSQL 8.4에서 초보자입니다. 임시 테이블에서 CSV 파일을 내보내려고합니다.PostgreSQL 8.4 COPY 명령 구문 분석 오류

나는 그러나,이 코드는 오류

\copy: parse error at ";"

처럼 반환

SET client_encoding TO 'SJIS'; 
\copy temp_table TO 'temp_table.csv' WITH CSV HEADER; 
SET client_encoding TO 'UTF8'; 

을 썼던 것처럼 제발 도와주세요 ... 사전에 감사합니다!

답변

-1

Documentation 당 올바른 구문은 COPY 문 제거, 아래와 같이 보일 것입니다, 그와

COPY { table_name [ (column_name [, ...]) ] | (query) } 
    TO { 'filename' | PROGRAM 'command' | STDOUT } 
    [ [ WITH ] (option [, ...]) ] 

입니다 @ 제안으로 ;을 제거 \WITH

SET client_encoding TO 'SJIS'; 
copy temp_table TO 'temp_table.csv' CSV HEADER; 
SET client_encoding TO 'UTF8'; 

(OR) IMSoP

\copy temp_table TO 'temp_table.csv' WITH HEADER 
+1

'\ copy'는'psql' 메타 명령입니다. 'COPY'는 SQL 문입니다. 그것들은 서로 관련이 있지만 다르다. – IMSoP

+0

정말 고마워요! 이 문제를 해결하여 ";"을 제거했습니다. – tomohitoy

1

\copy은 SQL 문이 아닌 the psql command-line client (8.4-specific documentation)의 내부 "메타 명령"입니다. 모든 메타 명령을 시작으로한다 개행 또는 \ (종료되기 때문에하는 종료 ;

이는 SQL COPY 문 매우 유사하도록 설계되어 있지만 필요 (또는 동의)하지 않습니다 새로운 메타 - 명령).

SET client_encoding TO 'SJIS'; 
\copy temp_table TO 'temp_table.csv' WITH CSV HEADER 
SET client_encoding TO 'UTF8'; 

this answer about COPY and \copy 참조 :

그래서 당신은 단순히 대해 불평 문자를 제거 할 수 있어야한다.

+0

당신은 그 링크에서 좋은 대답을주었습니다. 주어진 +1. 잘 읽었습니다. 마찬가지로 나는 당신의 제안에 따라 나의 대답을 편집하고';'를 제거했다. – Rahul

+0

대단히 감사합니다 !! 이렇게하면 CSV 파일을 내보낼 수 있습니다. 그리고 링크가 아주 좋습니다. 'COPY'와'\ copy'의 차이점에 대해서 배워야합니다. 나는 그것에 대해 혼란스러워했다. – tomohitoy