我正在学习Ruby on Rails,在这个过程中,我正在创建一个示例应用程序,它从csv文件中获取数据(涉及芝加哥凶杀案受害者的信息),将数据保存到数据库中,并将此信息显示给用户。 / p>
我从.csv文件的每一行抓取日期,我遇到一个问题,看似随机日期在数据库中显示为'nil',但其他日期将正确导入。我也在抓取Name和Age属性,这些属性正确导入并且没有问题。这只是我遇到问题的日期
这是我正在使用的模型:
class CreateVictims < ActiveRecord::Migration
def change
create_table :victims do |t|
t.string :name
t.integer :age
t.date :date
t.timestamps
end
end
end
这是我用来导入数据的rake任务:
require 'csv'
namespace :import_victims_csv do
task :create_victims => :environment do
csv_text = File.read('public/seed_data/2013all.csv')
csv = CSV.parse(csv_text, :headers => true)
csv.each do |row|
Victim.create!(date: row[1], age: row[5], name: row[8])
end
end
end
我会说大约50%的日期会被正确导入,但另外50%会导致'nil'。源.csv文件列出了所有名称的日期。
供参考,以下是我导入的csv文件的链接:CSV
答案 0 :(得分:1)
查看您的数据集,似乎日期的格式为mm/dd/yyyy
,根据此question/answer不再支持该格式的解析。因此,您可以尝试在创建模型之前重新格式化日期:
csv.each do |row|
formatted_date = Date.strptime row[1], '%m/%d/%Y'
Victim.create!(date: formatted_date, age: row[5], name: row[8])
end