2010-11-01 4 views
1

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

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

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

ответ

5

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

http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html
http://ruby-doc.org/stdlib/libdoc/csv/rdoc/classes/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 
0

Допуская rows представляет собой массив массивов:

require 'csv' 

comma_separated = CSV.generate {|csv| rows.each {|row| csv << row}} 
2

Вы также можете просто выводить данные из базы данных в 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 намного быстрее, чем библиотека FasterCSV Руби.

Смежные вопросы