9 백만 행의 큰 .csv 파일이 있습니다. 이러한 열 중 일부는이 .csv 파일에서 데이터베이스로 가져 오려는 따옴표 나 다른 특수 문자가 포함 된 텍스트를 포함합니다. 예를 들어이 행을 가져 오려면 다음과 같이 입력하십시오.Postgres가 큰 따옴표 값을 가져옵니다.
ID BH Units Name Type_building Year_cons
1 4 900.00 schoolgebouw "De Bolster Schoolgebouw 2014-01-01
위의 네 번째 열에 큰 따옴표가 있습니다. .csv 파일의 값은 따옴표로 묶이지 않지만 때로는 큰 따옴표 또는 백 슬래시 '\'가 텍스트에 나타납니다.
다음과 같은 오류 메시지가 표시됩니다. 다양한 문자 유형 (25)에 대한 ERROR 값이 길어집니다. 분명히 문자열의 시작으로 큰 따옴표를보고 .csv 파일 (다섯 번째 및 여섯 번째 열 포함)의 모든 내용을 단일 셀로 결합하려고합니다 (셀에 'De Bolster Schoolgebouw 2014- 01-01 '),'Name '열에 최대 25 자까지 입력 할 수 있으므로 적합하지 않습니다.
\COPY <tablename> FROM <path to file> WITH CSV DELIMITER ';' QUOTE E'\b' NULL '\N';
그것이 무엇이다하는 것은이 경우 A의, 뭔가 다른 (기본값은 큰 따옴표입니다) 견적 값을 설정 내 생각 :
나는이 솔루션을 제시되었던 유사한 주제 ( Is it possible to turn off quote processing in the Postgres COPY command with CSV format?를) 발견 백 스페이스이므로 큰 따옴표를 더 이상 따옴표로 인식하지 못합니다. 그러나 이것을 실행할 때 또 다른 오류가 발생합니다 : integer에 대한 INVALID 입력 구문.모든 값은 이제 인용되므로 '1'값의 ID는 ''1 ''값이되고 ID는 정수로 정의되므로 따옴표를 사용할 수 없습니다.
.csv 파일에서 큰 따옴표 및 다른 특수 문자를 Postgres 데이터베이스로 가져 오는 방법을 알고 있습니까?
미리 감사드립니다.
값 길이에 제한이없는 (테스트) 테이블에서 가져 오기를 시도 했습니까? 따옴표는 올바르게 인용 될 때 문제가되어서는 안됩니다. –
CSV에서 직접 샘플 행을 제공 할 수 있습니까? – pozs