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