PostgreSQL에 헤더로 파이프 구분 텍스트의 가장 간단한 가져 오기


0

몇 가지 테이블을 사용하여 데이터베이스를 만들려고합니다. 이 테이블 중 하나는 미국 경제 센서스에서 나온 약 130 만 행의 데이터를 저장하기위한 것입니다. 데이터는 파이프로 구분 된 텍스트 파일에 있습니다. 이것은 거의 PostgreSQL을 사용하는 첫 번째 노력입니다.

아래 코드와 비슷한 코드를 사용하여 모든 것을 텍스트로 가져 오기를 바랬습니다. (나는 모든 것을 문자로 취급하기로 잠정적으로 결정했다. 수치가되어야하는 값은 누락 된 값과 같은 알파벳 코드를 포함하고 있기 때문이다.) 그러나 COPY 설명서에 따르면 HEADER 옵션은 CSV 파일 가져 오기에서만 사용할 수 있습니다.

나의 궁극적 인 목표는 PostgreSQL을 사용하여 R에서 분석을 위해이 데이터의 박탈 된 버전을 생성하는 것입니다. 그러나 R은 대용량 파일에서 질식 할 수 있으므로 제 3의 툴을 요구하기보다는 PostgreSQL에서 모든 전처리 작업을 수행하기를 바랍니다. 나는 내가 가져올 파일에 대한 최소한의 사전 지식과 분석을 요구하는 이것을하는 방법을 찾고있다.

PostgreSQL을 사용하여이 작업을 수행하는 또 다른 방법이 있습니까? 아니면 다른 도구를 사용하여 첫 번째 행을 제거해야합니까?

HEADER를 사용할 수 없으면 CREATE TABLE 명령에 열 이름을 제공해야한다고 가정합니다. 이 올바른지?

또한 이러한 경우 PostgreSQL은 기본 데이터 유형을 적용하거나 각 열의 데이터 유형을 결정하려고합니까? 또는 기본 데이터 형식을 설정할 수 있습니까?

나는 Windows 7 64 비트 SP1에서 PostgreSQL 9.3.4를 실행하고 있습니다.

CREATE DATABASE employ;
CREATE TABLE employ.ec0700a1;
COPY EC0700A1
    FROM 'C:\\Users\\andrewH\\Documents\\OaklandTechEmploymentProject\\Economic Census 2007\\EC07_6-dig_AllGeo\\EC0700A1.dat'
    WITH    DELIMITER '|',
    HEADER TRUE;

답변:


1

CSV가 작동해야하는 것처럼 들립니다. TEXT 및 CSV 형식은 실제로 매우 유사합니다. 차이점은 따옴표와 이스케이프가 해석되는 방식과 null이 처리되는 방법에 주로 있습니다. 자세한 내용은 워드 프로세서 더 자세한 설명은

나는 단지 시도 할 것이다 :

COPY EC0700A1
    FROM 'C:\\Users\\andrewH\\Documents\\OaklandTechEmploymentProject\\Economic Census 2007\\EC07_6-dig_AllGeo\\EC0700A1.dat'
    WITH  FORMAT CSV,
    DELIMITER '|',
    HEADER TRUE;

그리고 그것이 효과가 있는지보십시오. 다른 문제가있는 경우 해당 문서 페이지에서 솔루션을 확인하거나 물론 다른 질문을하십시오.

아, 네, 열 이름과 데이터 타입이 필요합니다. CREATE TABLE 명령. 다시 그 문서를 참조하십시오. 데이터를 가져 오기 전에 테이블을 만들어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.