gpt4 book ai didi

mysql - 高效地将大型 mysql2 结果写入 CSV

转载 作者:可可西里 更新时间:2023-11-01 07:47:43 25 4
gpt4 key购买 nike

我们正在我们刚刚构建的 CMS 中构建 CSV 导出机制,但我们无法在包含数百万行的结果集上保持内存不足。将 MySQL 的 1MM+ 行结果(通过 mysql2 gem)写入 CSV 的最佳方法是什么。如果有什么不同的话,我们使用的是 Ruby 1.9.3p194 和 MySQL 5.5。我们的主要目标是降低 Ruby 进程的内存消耗。

最佳答案

默认情况下,mysql2 会缓存它为其结果集创建的 ruby​​ 对象。如果你关闭它,那么内存消耗应该会大大减少。例如你可能会做

require 'mysql2'
client = Mysql2::Client.new(:host => "localhost", :username => "someuser")
client.query 'use some_db'

CSV.open('output.csv', 'w') do |csv|
results = client.query("SELECT * FROM big_table")
results.each(:cache_rows => false) do |row|
csv << [row['column_a'], row['column_b']]
end
end

关于mysql - 高效地将大型 mysql2 结果写入 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11270528/

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