构建逗号分隔文件

时间:2010-11-01 02:50:40

标签: ruby csv

我需要使用ruby创建一个逗号分隔的文件。数据来自MySQL数据库。

所以示例文件看起来像:

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

3 个答案:

答案 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:

  

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

答案 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}}