2010-03-05 50 views
1

我試圖查詢表,獲取所有記錄並將結果保存爲CSV文件。 這是我迄今所做的:將查詢的輸出保存到Ruby中的文本文件中

require 'OCI8' 
conn = OCI8.new('scott','tiger','020') 
file = File.open('output.csv','w') do |f| 
conn.exec('select * from emp') do |e| 
    f.write log.join(',') 
end 
end 

..雖然它生成一個CSV文件,問題是,所有的記錄得到保存成一條線。我怎樣才能把這些數據放在一個新的記錄上?

回答

2

好了,你可以用f.puts代替f.write那裏,但我建議你看一看CSV模塊:

http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html

outfile = File.open('csvout', 'wb') 
CSV::Writer.generate(outfile) do |csv| 
    csv << ['c1', nil, '', '"', "\r\n", 'c2'] 
    ... 
end 

outfile.close 

PS:其實,還有另外一個CSV庫調用FasterCSV,它在Ruby 1.9的標準庫中變成了CSV。但總的來說,任何應該比自己寫作更好。

+0

我如何將每列映射到一個單獨的值?對不起,如果這個Q聽起來很愚蠢,但是文件處理(&Ruby)是我吸取並且想要克服的東西,我認爲這將是一個很好的學習方式。 – Sathya 2010-03-05 23:22:39

+0

我不明白你的問題,你是什麼意思的「單獨的價值」。正如我從OCI8文檔中看到的,塊中的「e」已經是一個數組,您可以使用'csv << e'將它寫入CSV行。 – 2010-03-06 00:19:56

+0

感謝您的幫助,我完成了! – Sathya 2010-03-08 15:37:32

相關問題