2017-03-28 18 views
0

csvファイルをruby on railsアプリケーションデータベースにインポートしようとしています。 bundle exec rake db:import_csvを実行したときにこのエラーが発生しました。unknown attribute '2191' for Landslide. 2191は、csvファイルの最初の行の最初の項目です。私の知る限り1としてRuby on rails csvファイルをデータベースにインポートするときのUnknow属性

import_csv.rake

require 'csv' 
namespace :db do 
    task :import_csv => :environment do 
    CSV.foreach("Sample_landslides.csv", :headers => true) do |row| 
     Landslide.create!(row.to_hash) 
    end 
    end 
end 

スキーマ

create_table "landslides", force: :cascade do |t| 
    t.integer "total_id" 
    t.integer "year_id" 
    t.date  "start_date" 
    t.date  "end_date" 
    t.integer "day_number" 
    t.string "continent" 
    t.string "country" 
    t.string "location" 
    t.string "type" 
    t.integer "admin_level" 
    t.float "lat" 
    t.float "lng" 
    t.boolean "mapped" 
    t.float "spatial_area" 
    t.integer "fatalities" 
    t.integer "injuries" 
    t.string "notes" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.string "trigger" 
    end 
+0

あなたのcsvファイルのヘッダーを貼り付けてください。 –

+0

'puts row.to_hash'を実行するとどうなりますか? –

+0

CSVヘッダー:総ID \t Year_ID \t日\t日\t日数\t五日数\t年\t大陸\t国\t場所\tタイプ\tが\t空間領域をマッピングし\tニューロング\t newLatは\t admin_level(M^2)\tソース\t死亡者数\t傷害\tトリガー\t注:\t注:\tレポート1 \tソース1 \tレポート2 ソース2 \t担当者ort 3 \tソース3 \tレポート4 \tソース4 –

答えて

0

あなたのCSVヘッダーがモデル属性と一致している必要がありますハッシュrow_to使用している場合。

require "csv" 

HEADER_MAP = { 
    "Total" => :total_id, 
} 

HEADER_CONVERTER = ->(header) { 
    HEADER_MAP.fetch(header, header).to_sym 
} 

csv = <<END 
Column1,Column2,EXT:MAT:PIDTC 
100,200,300 
400,500,600 
END 

CSV.new(csv, headers: true, header_converters: HEADER_CONVERTER).each do |row| 
    p row.to_hash 
end 
関連する問題