построение файла через запятую - PullRequest
1 голос
/ 01 ноября 2010

Мне нужно создать файл через запятую, используя ruby. Данные поступают из базы данных MySQL.

Таким образом, файл примера будет выглядеть так:

userid, username, firstname, lastname, tags
2343,blankman, blank, man, "hello world tags-here"

Ответы [ 3 ]

5 голосов
/ 01 ноября 2010

Существует стандартная библиотека CSV:

http://ruby -doc.org / STDLIB / libdoc / CSV / RDoc / index.html
http://ruby -doc.org / STDLIB / libdoc / CSV / RDoc / классы / CSV.html

или FasterCSV:

http://fastercsv.rubyforge.org/

который вы можете использовать следующим образом:

csv_string = FasterCSV.generate do |csv|
  csv << ["row", "of", "CSV", "data"]
  csv << ["another", "row"]
  # ...
end

или

csv_string = FasterCSV.generate do |csv|
  my_array.each do |item|
    csv << [item['name'], item['phone_number']]
  end
end
2 голосов
/ 01 ноября 2010

Вы также можете просто вывести данные из базы данных в CSV-файл напрямую, например:

find_by_sql(["SELECT userid, username, firstname, lastname, tags FROM blankman_table INTO OUTFILE ? FIELDS TERMINATED BY \',\' LINES TERMINATED BY \'\\n\'", filename])

Не очень привлекательно, но я обнаружил, что поколение MySQL CSV намного быстрее, чем библиотека Ruby FasterCSV.

0 голосов
/ 01 ноября 2010

Предполагая, rows является массивом массивов:

require 'csv'

comma_separated = CSV.generate {|csv| rows.each {|row| csv << row}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...