2012-08-02 6 views
21

상당히 큰 .txt 파일 ~ 9GB가 있습니다.이 txt 파일을 postgres에로드하고 싶습니다. 첫 번째 행은 헤더이며 모든 데이터가 이어집니다. Postgres에서 데이터를 직접 COPY하면 헤더가 데이터 유형이 postgres 테이블과 일치하지 않는다는 오류가 발생하므로 어떻게 든 제거해야합니다.Postgres를 만드는 방법 큰 txt 파일의 첫 번째 줄을 무시하십시오.

샘플 데이터 : ProjectId, MailId, MailCodeId, prospectid, listid, datemailed, 양 기부 지퍼 zip4, VectorMajor, VectorMinor, packageid, 위상 databaseid, AMOUNT2

15,53568419,89734,219906,15,2011-05-11 00:00:00,0,0,90720,2915,NonProfit,POLICY,230,3,1,0 

16,84141863,87936,164657,243,2011-03-10 00:00:00,0,0,48362,2523,NonProfit,POLICY,1507,5,1,0 

16,81442028,86632,15181625,243,2011-01-19 00:00:00,0,0,11501,2115,NonProfit,POLICY,1508,2,1,0 

동안 복사 기능 포스트 그레스의 첫 번째 행을 무시할 수있는 "헤더"설정을 가지고, 그것은 단지 CSV 파일을 작동합니다

0,123,516 :

copy training from 'C:/testCSV.csv' DELIMITER ',' csv header; 

내 txt 파일에 위의 코드를 실행하려고, 그것은 오류를 가져옵니다 나는 "인용"과 "탈출"을 추가 시도

copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header 
ERROR: unquoted newline found in data 
HINT: Use quoted CSV field to represent newline. 

속성하지만 명령은 단지 txt 파일에 대해 작동하지 않습니다 : 또는

copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header quote as E'"' escape as E'\\N'; 
ERROR: COPY escape must be a single one-byte character 

, 나는 자바 실행에 대한 생각 또는 별도의 stagging를 만들 테이블을 사용하여 첫 번째 행을 제거하지만 이러한 솔루션은 광범위하고 시간이 많이 걸립니다. 헤더의 첫 번째 행을 제거하기 위해 9GB의 데이터를로드해야합니다 ... 다른 포스트잇 데이터베이스에 데이터를로드 할 수 있도록 txt 파일의 첫 번째 행을 쉽게 제거 할 수있는 솔루션이 있습니까? CSV 옵션

+2

첫 번째 줄을 제거 않습니다 _header_ 옵션, 외부 유틸리티는 필요하지 않습니다. 이것이 "데이터에서 인용 부호가없는 줄 바꿈"으로 연결되면, 파일의 구조가 정확히 무엇인가라는 의문이 제기됩니다. [CSV] (http://en.wikipedia.org/wiki/Comma-separated_values)와 어떻게 다른가요? –

답변

38

사용 HEADER 옵션 :

WITH CSV HEADER DELIMITER AS ',' 

HEADER Specifies that the file contains a header line with the names of each column in the file. On output, the first line contains the column names from the table, and on input, the first line is ignored. This option is allowed only when using CSV format.

+0

죄송합니다. 제 잘못, CSV 헤더가 작동합니다. 내 txt 파일의 데이터는 실제로 내 CSV 파일과 다른 형식으로 오류가 발생했습니다. – thiakx

관련 문제