我使用一点 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
我已经找到了,如果它有效,将报告
result = client.query("SELECT * FROM really_big_Table", :stream => true)