0
我想將查詢的結果帶到數據庫並將它們保存到csv文件中。這是我目前的Ruby腳本。如何將數據庫結果保存到Ruby中的文本文件
#! /usr/bin/ruby
require 'rubygems'
require 'mysql'
require 'date'
# need mysql queries here/use mysql2 calls
db_con = Mysql.new("localhost", "root", "", "msd")
date_results = db_con.query("SELECT CONCAT(CONVERT(date_format(dd.date, '%b-%e'),char),'\\n') AS date
FROM msd.date_dim dd LEFT OUTER JOIN msd.results cs
ON dd.id = cs.date_id
GROUP BY
dd.date")
# create new xml file and insert header
open('test_trend.xml', 'w') do |f|
date_results.each_hash do |f|
f.puts "#{f['date']}"
end
end
我收到以下錯誤消息。第23行是date_results.each_hash行。
so_test.rb:24:in `block (2 levels) in <main>': private method `puts' called for {"date"=>"Jun-12\n"}:Hash (NoMethodError)
from /Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.9/lib/mysql.rb:686:in `call'
from /Users/pierce/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/ruby-mysql-2.9.9/lib/mysql.rb:686:in `each_hash'
from so_test.rb:23:in `block in <main>'
from so_test.rb:22:in `open'
from so_test.rb:22:in `<main>'
任何意見表示讚賞。謝謝。
http://stackoverflow.com/questions/356578/how-to-output-mysql-query-results-in-csv-format – Casper
@Casper感謝方向。我的示例已經過簡化,並且還有額外的測試行必須添加到文件以滿足要求。因此,在我的完整腳本中還有其他幾個f.puts圍繞着數據庫結果。 – analyticsPierce
這不是csv。 Ruby有一個csv庫,可以轉義逗號和類似的東西。你在做什麼只是寫文本到一個文件。而xml是文件擴展名的事實使得它有點額外的混淆,因爲它不是xml數據。 – pguardiario