【问题标题】:export mysql results to file using Ruby使用 Ruby 将 mysql 结果导出到文件
【发布时间】:2012-03-14 08:05:24
【问题描述】:

我想查询我的数据库并获取结果并将它们导出为 .txt、.cvs 或 .xls

mysql 数据库没有托管在我的本地机器上

这是我访问数据库并在屏幕上返回结果的代码:

 #!/usr/bin/ruby
 require 'mysql'
 require 'watir'
 require "win32ole"

 excel = WIN32OLE::new('excel.Application')
 workbook = excel.Workbooks.Add
 worksheet = workbook.Worksheets(1)

 mysql = Mysql.init()
 mysql.connect(host='hostname', user='username', passwd='pwd', db='DBname')

 results = mysql.query("Select * FROM table") 
 results.each{|row|; puts row;}
 mysql.close()

 worksheet.SaveAs("C:\\Scripts\\DB_Test\\Test.xlsx") 
 workbook.Close

【问题讨论】:

    标签: mysql ruby watir export-to-excel export-to-csv


    【解决方案1】:

    这颗宝石可能对您有很大帮助。您可以使用漂亮而灵活的 DSL 导出任何复杂的查询。

    https://github.com/stevenbarragan/julia_builder

    【讨论】:

      【解决方案2】:

      csv 很简单。我不确定您从 mysql.query 得到什么,但请确保每一行都是一个数组,其中包含您想要放入 csv 行的内容,然后执行以下操作:

      require 'csv'
      
      CSV.generate do |csv|
        csv << ["headers","describing","the data"]
        mysql.query("SELECT * FROM table").each { |row| csv << row }
      end
      

      csv 支持在标准库中,因此不需要任何 gem。请注意,标准库在 1.8 和 1.9 之间发生了变化 - 该示例应该适用于 1.9。

      【讨论】:

      • 谢谢...我必须安装 gem fastercsv 并将 CSV.generate 更改为 CSV.open('path to csv', 'wb') do |csv|之后它工作正常。
      猜你喜欢
      • 2017-12-31
      • 2015-07-28
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 2014-05-29
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多