gpt4 book ai didi

mysql - 在 Rails/Heroku 上摄取巨大的 CSV : MySQL Connection Closed - SignalException: SIGTERM

转载 作者:行者123 更新时间:2023-11-30 22:11:52 25 4
gpt4 key购买 nike

我有一个远程托管 (s3) 的巨大 CSV 文件 (2.4 GB),我正试图将其引入我的 Rails 应用程序。

我已将它加载到 temp 中并且似乎工作正常,但在我开始摄取/迭代文件后大约十分钟,连接一直在我 SIGTERM 上终止。

我在 heroku 上运行 rails 4.2 和 mysql 0.3.20。

我错过了什么?我如何完成这项工作?

rake aborted!
SignalException: SIGTERM
/app/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.21/lib/mysql2/client.rb:80:in `_query'
/app/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.21/lib/mysql2/client.rb:80:in `block in query'
/app/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.21/lib/mysql2/client.rb:79:in `handle_interrupt'
/app/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.21/lib/mysql2/client.rb:79:in `query'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:299:in `block in execute'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:466:in `block in log'
/app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.0/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract_adapter.rb:460:in `log'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:299:in `execute'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/mysql2_adapter.rb:231:in `execute'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/mysql2_adapter.rb:235:in `exec_query'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:336:in `select'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:32:in `select_all'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/query_cache.rb:70:in `select_all'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:38:in `select_one'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:43:in `select_value'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/relation/finder_methods.rb:314:in `exists?'
/app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.0/lib/active_record/querying.rb:3:in `exists?'

最佳答案

您可以通过两种方式进行:使用 SmarterCSV gem 并首先在本地进行测试,以确保它可以处理大小。如果大小不是问题,这将是您最好的选择,因为它使得在输入之前处理大型 csv 变得非常容易。如果这不起作用,您可以这样做:使用mysql的导入功能(这里讨论:http://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html)首先直接将数据扔到mysql中的一个表中。然后,您可以遍历记录并使用 rails find_each 方法将数据传输到适当的表,以避免垃圾收集器过载。我不确定导入功能是否与 postgres 的 COPY 相同,但如果确实如此,请确保您在 rails 中创建了一个没有主键的表来保存初始数据传输,如果您的 csv 文件没有' 有一个主键列。

关于mysql - 在 Rails/Heroku 上摄取巨大的 CSV : MySQL Connection Closed - SignalException: SIGTERM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39845043/

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