2014-01-24 2 views
1
을 업데이트합니다.

방금 ​​내 레일 앱의 sqlite에서 postgresql로 전환하고 csvs를 통해 데이터베이스로 데이터를 가져 오려고했습니다. 그러나 데이터를 가져올 수 있었지만 ID를 가져올 수 없으며 CSV를 가져올 때 자동으로 채워지는 입력란을 만들었습니다. 나는 그들을 CSV 파일에 공백으로 남겨두고있다. CSV 파일을 가져올 때 해당 필드를 자동으로 채우는 방법이 있습니까?postgres는 csv를 가져오고 자동으로 ID를 채우고에서 생성하고

답변

1

COPY으로 가져올 때 일부 필드를 기본값으로 설정하려면 COPY 명령에서 해당 필드를 생략해야합니다.

COPY tablename FROM 'somefile.csv' FORMAT csv; 

당신이 쓰는 것 : 대신

COPY tablename (col1, col2, col3) FROM 'somefile.csv' FORMAT csv; 

완전히 CSV 데이터에서 열을 생략보다는 빈을 떠나. 열을 생략하면 열이 자동으로로 설정됩니다.

불행히도 PostgreSQL에는 입력 된 CSV의 열을 무시할 수있는 옵션이 없으므로 CSV의 열은 COPY 목록의 열과 일치해야합니다. CSV 입력을 수정할 수없는 경우 동일한 구조의 COPY ~ TEMPORARY 또는 UNLOGGED 테이블을 입력 한 다음 INSERT INTO real_target (col1, col2, col3) SELECT col1, col2, col3 FROM the_temp_table;