2012-11-07 77 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