我是Ruby on Rails的新手,并且正在使用Michael Hartl的Ruby on Rails Tutorial进行研究。
我现在正在开发自己的项目,该项目允许用户登录网站,提供个人生物识别信息并上传他们选择的csv文件(锻炼数据),以使用锻炼信息填充数据库。
我向其他有更多经验的朋友寻求帮助,他们的建议是创建一个临时表并使用临时表来填充其他表格(我目前有八个不同的表格用于锻炼测量)。
我对在线暂存表使用情况进行了大量研究,但未能找到如何有效使用临时表将csv文件导入多个模型的可靠答案。
根据我对登台表的理解,每次我(用户)完成上传并将csv文件导入数据库时,我应该重置登台表,但是无法在线查找是否是正确的做法
这是使用登台表的正确方法吗?我能想到的唯一另一个选择是每次用户上传文件时创建和删除一个临时表,但这似乎太昂贵了,无法正确使用。
谢谢!
答案 0 :(得分:0)
A"临时表"只是一个中间表,其字段类型与预期的CSV格式相同。当用户上传CSV文件时,您可以read the CSV row wise填写此表。具有登台服务器的优点是,在填充实际域表之前对数据进行任何昂贵的处理都可以在后台完成。这样做的两种方法如下所述:
将数据集保存到临时表后触发后台处理。
将数据上传到登台服务器后,您可以触发后台作业来处理数据并在后端异步填充模型。为此,我建议使用库sidekiq
。 Ruby Toolbox
Cron的工作
使用此方法,您可以定期检查登台表,然后将到目前为止填充的数据填入相关目标表。一个合适的ruby库就是whenever
gem。
您不需要一次处理登台表,也不需要在操作后删除登台表。如果有人在删除数据时尝试将数据上传到临时表,会发生什么情况。客户端服务器系统的设计应该能够同时使用多个用户。一个好的策略是一次一行地延迟处理临时表中的数据 - 并且可以在处理后删除行。
另外,对于更简单的用例(单个保存 - 进程 - 丢弃序列),您只需将CSV保存在磁盘上,然后通过上述策略在后台处理它,无需登台表。如果您计划填充多个数据存储(可能跨越地理边界)和/或通过多个工作人员同时处理数据来执行处理,则临时表特别有用。