我有一個csv文件與轉儲數據的表,我想直接導入到我的數據庫使用導軌。導軌從csv導入模型
我目前有這個代碼:
csv_text = File.read("public/csv_fetch/#{model.table_name}.csv")
ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{model.table_name}")
puts "\nUpdating table #{model.table_name}"
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
row = row.to_hash.with_indifferent_access
ActiveRecord::Base.record_timestamps = false
model.create!(row.to_hash.symbolize_keys)
end
與here幫助..
考慮我的樣本CSV:
id,code,created_at,updated_at,hashcode
10,00001,2012-04-12 06:07:26,2012-04-12 06:07:26,
2,00002,0000-00-00 00:00:00,0000-00-00 00:00:00,temphashcode
13,00007,0000-00-00 00:00:00,0000-00-00 00:00:00,temphashcode
43,00011,0000-00-00 00:00:00,0000-00-00 00:00:00,temphashcode
5,00012,0000-00-00 00:00:00,0000-00-00 00:00:00,temphashcode
但與此代碼的問題是:
- It正在生成`id'作爲自動增量1,2,3,..而不是在 csv文件中。
- 爲那裏是
0000-00-00 00:00:00
默認爲自動空,拋出錯誤作爲列created_at不能爲空記錄的時間戳...
有什麼辦法,我可以做到這一點在通用的方法來從CSV導入到型號? 或者我將不得不爲每個模型編寫自定義代碼來手動操縱每行中的屬性?
1:是的「身份證」被分配,我已經看着每個stmt與軌道控制檯... 2:在rails的遷移,如果默認指定表t.timestamps,它會自動生成創建,updated_at列與此默認值,而不是在SQL – 2012-04-12 11:03:52