gpt4 book ai didi

ruby - 将大型数据库表导出到 csv 文件时流式传输到 ruby​​ 中的文件

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:10 25 4
gpt4 key购买 nike

我使用一些 ruby​​ 脚本和 mysql2 gem 从 mysql 数据库中导出以下内容

require 'csv'
require 'mysql2'

begin
db = Mysql2::Client.new( :host => ".", :username => "xyz", :password => 'xyz', :database => 'xyz')

results = db.query 'select * from mytable'

CSV.open("C:/tmp/mytable.csv", "w") do |csv|
csv << results.fields

results.each do |row|
csv << row.values
end
end
end

这适用于小表,但我认为我应该为大表做不同的事情。我在这里可能是错的,但它似乎将整个表格读出到内存中,然后一次将其全部写入。如果我有一个包含数千万行的大表,我想不断地流式传输到文件。

我该怎么做呢?

我试着对一个大约有 1000 万行的表运行它并得到以下结果

[FATAL] failed to allocate memory

我找到了 this , 如果有效,将报告

result = client.query("SELECT * FROM really_big_Table", :stream => true)

最佳答案

答案确实是这样,问题是读取数据库表

results = db.query( 'select * from mytable',  :stream => true, :cache_rows => false )

csv 的写入是异步完成的

关于ruby - 将大型数据库表导出到 csv 文件时流式传输到 ruby​​ 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17684184/

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