2011-09-20 12 views
5

작동합니까?MySQL csv 내보내기에서 PostgreSQL csv 가져 오기?

MySQL의 수출 :

SELECT * INTO OUTFILE 'C:/data.csv' 
FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' 
FROM table; 

PostgreSQL의 : 어떤 이유로

COPY table FROM 'C:/data.csv' WITH DELIMITER AS '\t' NULL AS '\\N' CSV 

가없는 열입니다. 그래서 구분 기호에 문제가 있다고 생각합니다. 나는 맞습니까? 나는 무엇을 할 수 있습니까? 아래 원인 오류가있는 행을 검사 할 수 있습니다. 그러나 내가 찾아야 만하는 캐릭터는 무엇입니까? PostgreSQL의에서

ERROR: missing data for column "Column21" 
CONTEXT: COPY table, line 88219: ... 
+0

그래서 라인 88219에서하는 탈출 견적 따끔 포함 "... \"포스트 그레스는이 인용을 끝내 실패처럼 ... "보인다. 이 특별한 옵션이 있습니까? – FirstTimePoster

답변

11
  1. 는 이스케이프 문자를 알아야 추가하십시오 : ESCAPE '를 \'OPTIONALLY ENCLOSED BY ' "'
  2. 을 CSV 나쁜 형식입니다 인용 강제하는 것이 좋습니다
  3. ..

전체 코드 :

MySQL은 5.5.15 :

SELECT * 
INTO OUTFILE 'C:/data.csv' 
FIELDS TERMINATED BY '\t' ENCLOSED BY '"' ESCAPED BY '\\' 
LINES TERMINATED BY '\n' 
FROM table; 

포스트 그레스 9.0.3 :

COPY table FROM 'C:/data.csv' WITH DELIMITER AS '\t' NULL AS '\\N' ESCAPE E'\\' CSV 
+0

그냥 내 친구를 찾고 있었어! –

+0

위의 작업을 위해 E '\ t'로 분리 문자를 이스케이프해야했습니다. – Zabuzzman

0

기본 인용 문자는 따옴표이지만, the documentation 당신이 어떤 1 개의 1 바이트 문자를 사용할 수 있습니다 말한다. @knitti 포스트 그레스에서 언급 한 바와 같이

ESCAPE '\\' 
관련 문제