使用 FasterCSV 将一些数据从 mysql 导出到 csv 文件。我希望输出的 CSV 中的列与查询中的 select 语句的顺序相同。
例子:
rows = Data.find(
:all,
:select=>'name, age, height, weight'
)
headers = rows[0].attributes.keys
FasterCSV.generate do |csv|
csv << headers
rows.each do |r|
csv << r.attributes.values
end
end
CSV 输出:
height,weight,name,age
74,212,bob,23
70,201,fred,24
.
.
.
我希望 CSV 列的顺序与我的选择语句相同。显然属性方法是行不通的。关于确保我的 csv 文件中的列与 select 语句的顺序相同的最佳方法的任何想法?有很多数据和性能是一个问题。选择语句不是静态的。我意识到我可以遍历 rows.each 循环中的列名,但它似乎有点脏。