Ruby on rails 对于使用固定长度字符串作为id的导入公共数据表,是否应该使用rails整数id?

Ruby on rails 对于使用固定长度字符串作为id的导入公共数据表,是否应该使用rails整数id?,ruby-on-rails,ruby,postgresql,csv,database-design,Ruby On Rails,Ruby,Postgresql,Csv,Database Design,我需要使用公共政府数据表,通过csv导入,作为rails应用程序中的表(使用postgresql)。该表使用固定长度的12位数字字符串(通常至少有一个前导零)作为主键。我觉得在这里我有三个选择: 在导入时添加rails生成的整数主键 要求rails将字符串解释为整数,并将其用作主键 强制rails将字符串用作主键(然后,在其他关联表中也用作外键) 我担心做选择1,因为我可能需要至少每年重新批量导入这个政府数据,因为它会更新,以保持我的数据库最新。如果记录被添加和删除,那么在重新导入后确保rail

我需要使用公共政府数据表,通过csv导入,作为rails应用程序中的表(使用postgresql)。该表使用固定长度的12位数字字符串(通常至少有一个前导零)作为主键。我觉得在这里我有三个选择:

  • 在导入时添加rails生成的整数主键
  • 要求rails将字符串解释为整数,并将其用作主键
  • 强制rails将字符串用作主键(然后,在其他关联表中也用作外键)
  • 我担心做选择1,因为我可能需要至少每年重新批量导入这个政府数据,因为它会更新,以保持我的数据库最新。如果记录被添加和删除,那么在重新导入后确保rails主键保留在正确的记录中似乎会非常复杂

    选择2似乎是一条出路,(它将解决重新进口的问题),但我不清楚如何去做。它是否像告诉rails将该列作为整数导入那样简单

    选择3似乎是可行的,但在我在其他地方读到的帖子中,这并不是一个非常“讽刺”的方式

    我欢迎任何关于这方面的建议或彻底的解决方案

    更新


    我最终使用了选项1,这是一个正确的选择。这是因为我对rails还不熟悉,本来以为我会做一些直接的批量导入(在后端,直接导入Postgresql)会给我留下上面描述的问题。但是,我查看了Railscast 369,它解释了如何将csv导入功能作为最终用户功能构建到应用程序中。这非常容易,我就是这么做的。这样做的结果是,应用程序执行逐行导入,因此可以在该级别内置适当的检查。

    研究编写外部数据包装器。然后创建一个物化视图,将其完全拉入,以便在没有任何网络开销的情况下操作本地数据。然后每隔一段时间刷新一次。重要的事情:-使用一个整数作为主键,这样您就可以快速查询表。-有一种从传入寄存器中确定主键的方法。你可以把你所说的那根弦换成另一个领域,只要它是独一无二的。这几乎肯定超出了我目前仍然微薄的能力。总有一天。。。Louis Ortega Araneda&mu太短了:根据我的更新,这是我使用的解决方案。谢谢大家的帮助!