我的客戶給了我一個項目車輛列表。我需要將它們放入我可以使用的表格中,但它們目前位於.cvs文件中。我有readaround和found一些信息,但沒有解決我的特殊問題。Rails和Postgres - 從.cvs複製到表,同時跳過created_at列
我已經生成了與.cvs文件(id,year,make,model,trim)中的信息匹配的模型,運行遷移,現在有我需要的表。當我嘗試使用psql COPY時,問題就出現了。這是我讀過什麼工作:
copy list_vehicles from '/path/to/list.csv' DELIMITERS ',' CSV;
,但它給了我
ERROR: missing data for column "created_at"
很好,所以我試試這個:
copy list_vehicles (id, year, make, model, trim) from '/path/to/list.csv' DELIMITERS ',' CSV;
和我回去
ERROR: null value in column "created_at" violates not-null constraint
好的,那麼這應該工作:
copy list_vehicles (id, year, make, model, trim) from '/path/to/list.csv' DELIMITERS ',' WITH NULL AS ' ' CSV FORCE NOT NULL created_at;
不,
ERROR: FORCE NOT NULL column "created_at" not referenced by COPY
我不知道在哪裏可以從這裏走。我正在考慮嘗試將created_at列暫時取消,然後將其添加到另一個遷移中?任何指導將不勝感激。
感謝
謝謝,我是傾斜這種方式。我知道鐵軌這樣做,我可以手動刪除列。我不認爲我需要刪除updated_at,因爲它可能是空的,對吧?什麼是刪除列的最佳方式?隨着遷移?不知道這裏的最佳做法... –
如果此數據加載是一次性事情,您可能想要在SQL中完成所有操作。刪除列,加載您的數據,再次添加列。如果你認爲你需要偶爾做,可以考慮在Rails應用程序中添加一些代碼來爲你做。 – dpassage
截至目前,它看起來像季度更新。我想我們認爲我們會有更好的解決方案,但是暫時我不介意每次重建表格。現在,如果我只知道最好的方法去做... –