2011-04-29 2 views
1

Postgres 테이블로 가져 오려고하는 CSV 파일이 있습니다. 문제가 발생하면 기본 키 위반 (CSV 파일의 중복 레코드)이 발생합니다.PostgreSQL COPY FROM 명령 도움말

만약 내가 그러한 레코드를 수동으로 걸러 낼 수 있다면, 이러한 파일은 매 시간마다 그러한 데이터를 생성하는 프로그램에 의해 생성됩니다. 내 스크립트가 자동으로 데이터베이스로 가져와야합니다.

내 질문은 : 거기에 복사 명령을 건너 뛰거나 테이블에 파일을 가져 오면 계속할 수 있도록 COPY 명령이나 Postgres에서 플래그를 설정할 수있는 방법이 있습니까?

답변

3

내 생각은 두 가지 방법으로이 문제를 접근하는 것입니다 :

  1. 은 복사 과정에서 중복 행의 "예외 보고서", such as this one을 만드는 데 도움이 할 수있는 유틸리티를 사용합니다.
  2. 임시 테이블에 데이터를 먼저로드하고 중복으로 마사지하여 워크 플로를 변경 한 다음 (대상 테이블로 조인하고 dup 플래그로 임시 테이블에있는 모든 데이터를 표시) 누락 된 레코드 만 가져 와서 예외 테이블로 이동합니다.

나는 개인적으로 두 번째 방법을 선호하지만, 이는 귀하의 경우 특정 워크 플로 문제입니다.

+1

두 번째 솔루션으로도 갈 것입니다 (또는 다른 도구를 사용하여 데이터를로드하십시오) –

+0

+1. 이 상황에서 임시 테이블을 사용합니다. –

+0

두 번째 솔루션으로 갈 것입니다 – CodeWrite