我应该在哪里放置一个用于执行数据迁移的CSV文件?

时间:2010-09-06 01:17:26

标签: ruby-on-rails ruby migration data-migration fastercsv

这可能是重复的,但我找不到有人问相当这个问题。

我的理解*是,如果我想将数据从外部源迁移到我的Rails应用程序的数据库,我应该使用迁移。从我的初步研究看来,我能做的就是使用像FasterCSV这样的工具在迁移(.rb)文件本身中解析CSV文件(例如)。

这是正确的做法吗?如果是这样,我应该在哪里放置那个CSV文件 - 似乎如果迁移毕竟是可逆/可重复的,那么CSV数据应该保存在一个稳定的位置。

*如果我对RoR还不熟悉,我是否完全错误地知道如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

你可以把它写成没有FasterCSV的rake作业,尽管我同时使用它们。

Write rows to 'csvout' file.

outfile = File.open('csvout', 'wb')
CSV::Writer.generate(outfile) do |csv|
  csv << ['c1', nil, '', '"', "\r\n", 'c2']
  ...
end

outfile.close

此文件将输出写入rake文件的位置。在您的情况下,您可以将其放在CSV的单独文件夹中。我个人会将其从应用程序结构的其余部分中删除。

答案 1 :(得分:1)

您可能需要查看seed_fu来管理它。它的好处是能够轻松更新数据库中已有的数据。您可以将CSV转换为种子文件,这只是一个Ruby代码(在那里提供了示例代码)。