Ruby on rails 搜索数据库时解析大型CSV
目前有一个棘手的问题,需要找到最有效的解决方法 我们定期迭代大型CSV文件(约50000到2m行),对于每一行,我们需要检查数据库表中的匹配列 因此,例如,每个CSV行可以有关于活动的详细信息-艺术家、地点、日期/时间等,对于每一行,我们检查我们的数据库(PG)中与艺术家、地点和日期/时间最匹配的行,然后在找到匹配项时执行操作 目前,整个过程是高度CPU、内存和时间密集型的逐行拉动,因此我们分批执行匹配,但仍在寻找一种有效的方法来执行内存和时间方面的比较 谢谢Ruby on rails 搜索数据库时解析大型CSV,ruby-on-rails,ruby,database,postgresql,csv,Ruby On Rails,Ruby,Database,Postgresql,Csv,目前有一个棘手的问题,需要找到最有效的解决方法 我们定期迭代大型CSV文件(约50000到2m行),对于每一行,我们需要检查数据库表中的匹配列 因此,例如,每个CSV行可以有关于活动的详细信息-艺术家、地点、日期/时间等,对于每一行,我们检查我们的数据库(PG)中与艺术家、地点和日期/时间最匹配的行,然后在找到匹配项时执行操作 目前,整个过程是高度CPU、内存和时间密集型的逐行拉动,因此我们分批执行匹配,但仍在寻找一种有效的方法来执行内存和时间方面的比较 谢谢 将完整的CSV文件加载到数据库中的
这将把大部分负载转移到DB服务器,避免所有ActiveRecord开销(网络流量、结果解析、模型实例化等)如果您提供需要考虑的模式和关系示例,肯定会有所帮助。但一般来说,分批配料是一个很好的方法。谢谢你的建议!最初我们有一些限制,基本上不可能将导入到临时表中,但现在我们已经解决了这个问题