将查询的输出保存到Ruby中的文本文件中

时间:2010-03-05 22:51:36

标签: ruby oracle csv

我正在尝试查询表,获取所有记录,并将结果保存为CSV文件。 这就是我到目前为止所做的:

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文件,但问题是所有记录都保存在一行中。如何将数据放入每条记录的新行?

1 个答案:

答案 0 :(得分: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:实际上,还有另一个名为FasterCSV的CSV库,它在Ruby 1.9的标准库中成为CSV。但总的来说,任何人都应该比自己写作更好。