Сохранение вывода запроса в текстовый файл в Ruby - PullRequest
1 голос
/ 06 марта 2010

Я пытаюсь запросить таблицу, получить все записи и сохранить результат в виде файла 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 Ответ

2 голосов
/ 06 марта 2010

Ну, вы можете использовать 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 , которая стала CSV в стандартной библиотеке в Ruby 1.9. Но в целом все должно быть лучше, чем писать это самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...