2017-09-09 48 views
2

私は自分のDBをシードするために使用したいs3に10GBのcsvファイルをいくつか持っています。私はHeroku上でRoRアプリケーションを実行していますが、メモリに収まらないほど大きすぎるため、csvを1行ずつストリーム処理する方法を理解することはできません.File.openを使用して外部ファイルにアクセスすることはできません。S3から大きなファイルを1行ずつストリーミングする

Tempfileを使用して一度にバイトストリームを調べましたが、新しい行と一致しないため、Rubyでこれを再構築するのは難しいです。

ありがとうございました!

答えて

1

APIドキュメントで説明するように、ストリームを読むことができます:http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/S3Object.html

File.open('output', 'wb') do |file| 
    large_object.read do |chunk| 
    file.write(chunk) 
    end 
end 

あなたはまた、バイトの範囲を読み込むためのオプションとしてrangeを使用することができます。

http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/S3Object.html#read-instance_method

関連する問題