gpt4 book ai didi

mysql - 使用跨所有列的多个 Ruby 查询创建 CSV

转载 作者:行者123 更新时间:2023-11-29 11:42:06 24 4
gpt4 key购买 nike

我正在使用 Ruby 从远程 MySQL 数据库自动生成报告。我正在使用多个查询(而不是将它们合并为一个查询),因为我最终希望根据一列或多列中的给定值拆分行。它还使我可以选择跨不同数据库甚至不同主机工作。

我正在使用 mysql2watircsv Ruby gem。

我的代码:

#!/usr/local/bin/ruby
require "mysql2"
require "watir"
require "csv"

puts "Initializing Report"

Mysql2::Client.default_query_options.merge!(:as => :array)

mysql = Mysql2::Client.new(:host => "1.2.3.4", :username => "user", :pass => "password", :database => "db")

puts "Successfully accessed db"

month = mysql.query("SELECT DATE_FORMAT(db.table.start, '%m') FROM db.table WHERE db.start.group = 1;")

report = mysql.query("SELECT db.table.name, db.table.company, db.table.type FROM db.table WHERE db.start.group = 1;")

CSV.open("Report.csv", "wb") do |csv|
csv << ["Month", "Name", "Company", "Type"]
month.zip(report).each {|row| csv << row}
end

puts "Results can be found in Report.csv"

现在 report 查询要大得多,跨越由近十几个 INNER JOINWHERE 组成的几十列和几千行标准。这个问题已经被简化了。

以上代码在 CSV 文件中给出的输出是:

Month, Name, Company, Type
["1"], ["Adam", "companyrecordlabel", "Ficticious"]
["1"], ["Alana", "beeUrself", "Made-up"]
. .
. .
. .
["12"], ["Zed", "Meds4U", "Fake"]

以及我想要的输出:

Month, Name, Company, Type
1, Adam, companyrecordlabel, Ficticious
1, Alana, beeUrself, Made-up
. .
. .
. .
12, Zed, Meds4U, Fake

我已经为此苦苦挣扎了几个小时,但似乎无法获得我想要的输出。

我已读取 CSV 文件,将多个(和多维)数组输出到 .txt 文件,并将单个(大)查询写入 CSV 文件,不带括号或引号;但我似乎无法实现这一目标。

感谢您提前提供的所有帮助。

编辑:我正在使用 this 的帮助问题。

最佳答案

您可能想使用以下代码

month.zip(report).each {|row| csv << row.flatten}

关于mysql - 使用跨所有列的多个 Ruby 查询创建 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35606153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com