aws-sdk
gemを使用して、AWS S3に保存されているCSVファイルを読み取っています。S3に格納されたCSVファイルを解析するための推奨されるアプローチは何ですか?
AWS docを参照してください。これまでのところ、私が持っている:PRYで
Aws::S3::Resource.new.bucket(ENV['AWS_BUCKET_NAME']).object(s3_key).get({ response_target: "#{Rails.root}/tmp/items.csv" })
を、これが返されます。
output error: #<IOError: closed stream>
をしかし、tmp/
に移動します。 items.csv
ファイルが表示され、適切なコンテンツが含まれています。戻り値が実際のエラーであるかどうかはわかりません。
私の心配です。一時ファイルを"#{Rails.root}/tmp/"
に保存しても問題ありませんか?
もう1つのアプローチを検討する必要がありますか?
ファイルをメモリにロードしてからCSV.parse
にロードできます。 CSVファイルが巨大な場合、これは意味を持ちますか?
「CSVファイルが巨大であれば、これは意味がありますか?」もちろん。スケーラビリティは非常に重要です。特に共有ホストで親切であり、他のホストとのやりとりが必要な場合は特に重要です。ファイル全体をスラーする 'read'ではなく、行単位のファイル読み取りを使用します。 –
@theTinMan "line-by-line-file-read"には何をお勧めしますか? –
[CSVクラスのドキュメント](http://ruby-doc.org/stdlib-2.3.0/libdoc/csv/rdoc/CSV.html)には、CSVファイルの読み書きにさまざまなバリエーションがあります。 –