我需要使用ruby创建一个逗号分隔的文件。数据来自MySQL数据库。
所以示例文件看起来像:
userid, username, firstname, lastname, tags 2343,blankman, blank, man, "hello world tags-here"
答案 0 :(得分:5)
有一个标准的CSV库:
http://ruby-doc.org/stdlib/libdoc/csv/rdoc/index.html
http://ruby-doc.org/stdlib/libdoc/csv/rdoc/classes/CSV.html
或FasterCSV:
你可以这样使用:
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
答案 1 :(得分: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生成比Ruby的FasterCSV库快得多。
答案 2 :(得分:0)
假设rows
是一个数组数组:
require 'csv'
comma_separated = CSV.generate {|csv| rows.each {|row| csv << row}}