2012-11-07 45 views
0

我建立了一个任务可以导入这样的数据:无法设置布尔值,当从CSV导入数据到PostgreSQL

CSV.foreach(file, :headers => true) do |row| 
    question = Question.new ({ 
    content: row[0], 
    mark:  row[1], 
    topic_id: row[2], 
    question_type_id: row[3], 
    answers_attributes: [ 
    { content: row[5], correct: row[6] }, 
    { content: row[7], correct: row[8] } 
    ] 
}) 
question.user_id = row[4] 
question.save! 

这是我的CSV文件:

content, mark, topic_id, question_type_id, user_id, content, correct, content, correct 
_____ are people involved in or affected by project activities, 5, 16, 1, 3, True, 't', False, 'f' 

但是,当我运行导入任务,correct attribute总是在数据库中是FALSE,我试过用PostgreSQL的Boolean Data Type,但是没有工作。我错了什么?

+0

请向我们展示(生成的)SQL。我看起来像't'和'f'字段是多余的/多余的。 – wildplasser

+0

@DipakPanchal它有错误:'第2行非法引用。' @wildplasser当我使用'rake import'时,如何显示SQL? – Thanh

+0

结果不变,两个答案行仍然有正确的值是'FALSE' – Thanh

回答

1

我发现这个问题。这是csv文件有问题:

content, mark, topic_id, question_type_id, user_id, content, correct, content, correct 
_____ are people involved in or affected by project activities, 5, 16, 1, 3, True, 1, False, 0 

这里的问题是布尔列值的前面的空格。在上面的csv文件中,True, 1之间的空间出现问题。当csv文件导入到数据库时,它包含1前面的空格,所以导入的值为:" 1",而不是"1",所以postgresql无法识别带空格的值。我以前它去掉了空间,而且现在的工作,这是我正确的csv文件(我删除了所有的空间):

content,mark,topic_id,question_type_id,user_id,content,correct,content,correct 
_____ are people involved in or affected by project activities,5,16,1,3,True,1,False,0 

这也许帮助,所以如果有在CSV文件空间和我一样的问题。

0

尝试更换真/假与真/假

1.9.3-p194 :006 > True 
NameError: uninitialized constant True 
from (irb):6 
from /Users/SAdvincula/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>' 
1.9.3-p194 :007 > true 
=> true 
+0

我试过了,但没有工作:(啊,在我的csv中是'True'和'False',它是答案的内容,'t'和'f'是我用来设置布尔值的值 – Thanh

0

更改您的CSV文件

content, mark, topic_id, question_type_id, user_id, content, correct, content, correct 
_____ are people involved in or affected by project activities, 5, 16, 1, 3, True, '1', False, '0' 
+0

什么是您的' f'和't'?如果它是布尔值,并且使用1作为true,使用0作为false –

+0

也许你误会了,'True'和'False'是'content'列的值,改变它只是改变答案的内容。'f'和't'是设置[布尔数据类型]的值(http://www.postgresql.org/docs/9.2/static/datatype-boolean.html) – Thanh

+0

无论如何,谢谢你的帮助,我会发布当我发现问题时回答:) – Thanh