2014-01-24 26 views
1

上創建和更新我剛從sqlite切換到postgresql爲我的rails應用程序,並嘗試通過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數據,而不是僅僅讓他們的空白。 當您省略這些列時,它們會自動設置爲DEFAULT

不幸的是,PostgreSQL無法忽略輸入CSV的列,因此CSV的列必須與COPY列表中的列匹配。如果無法修改CSV輸入,則可以使用COPYTEMPORARYUNLOGGED表格具有相同的結構,然後執行INSERT INTO real_target (col1, col2, col3) SELECT col1, col2, col3 FROM the_temp_table;