在Ruby中将列(SQL查询)添加到CSV文件

时间:2016-02-23 21:25:22

标签: mysql sql ruby csv

我一直无法弄清楚如何将其他列而不是行写入Ruby中的CSV文件。在这种情况下,它们是SQL查询。

我的代码片段:

month = mysql.query("SELECT DATE_FORMAT(company_db.dates.starting_date,'%m') FROM company_db.dates.starting_date;")

day = mysql.query("SELECT DATE_FORMAT(company_db.dates.starting_date,'%d') FROM company_db.dates.starting_date;")

year = mysql.query("SELECT DATE_FORMAT(company_db.dates.starting_date,'%Y') FROM company_db.dates.starting_date;")

CSV.open("Dates.csv, "wb") do |csv|
  csv << ["Month", "Day", "Year"]
  csv << [(month.each {|row| csv << row}), (day.each {|row| csv << row}), (year.each {|row| csv << row})]
end

我得到的输出:

Month, Day, Year
1,
.
.
.
12,
1,
.
.
.
31,
1970,
  .
  .
  .
2015

我想要的输出:

Month, Day, Year
1, 1, 1970
.  .    .
.   .    .
.    .    .
12, 31, 2015

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我相信Enumerable.zip是您正在寻找的方法。

鉴于您的三个问题:

csv << [ 'Month', 'Day', 'Year' ]
csv << month.zip( day, year )

答案 1 :(得分:-1)

results = mysql.query("SELECT DATE_FORMAT(company_db.dates.starting_date,'%m') AS month, DATE_FORMAT(company_db.dates.starting_date,'%d') AS date, DATE_FORMAT(company_db.dates.starting_date,'%Y') AS year FROM company_db.dates.starting_date;")

CSV.open("Dates.csv, "wb") do |csv|
  csv << ["Month", "Day", "Year"]
  results.each do |row|
    csv << [row.month, row.date, row.year]
  end
end