2011-12-29 74 views
2

喜歡在標題..我想在我的分貝創建表,然後用我的CSV(標籤是「;」)文件中的記錄填充它。有記錄(和整個表)不會被任何人更新或更改。我只需要用這些記錄創建db(僅Postgres)。我想稍後從這張表中隨機抽取一些記錄。有小費嗎?或者,也許從數據庫直接從csv文件instad的隨機記錄是更好的解決方案? Plz幫助快速的解決方案來填充創建和填充數據表從csv文件中的數據

回答

2

您可以製作一個命令行工具來讀取您的cvs文件並使用ActiveModel與數據庫交談。在這種情況下,您可以像在任何其他rails應用程序中那樣創建模型和數據庫。

要閱讀CVS文件,你culd做到這一點:

require 'csv' 

CSV.foreach(fileName, :headers => true, encoding: "UTF-8") do |row| 
    row['myfiled'].to_s 
end 

您需要的CSV寶石,你必須與你要使用的列的名稱,以取代MyField的。如果你有紅寶石數據,你可以創建你的模型,就好像你會在rails中一樣。將定義放在同一個文件中或使用require來引用模型。

或者,您可以只讀cvs文件並隨機決定是否要使用這些數據。在這種情況下,你不需要把它放在數據庫中。

+0

謝謝!但是,你能建議,哪種方式更快?我的csv文件有大約100000行(記錄),所以我認爲使用db會比每次打開大文件都快,是嗎? – mrmnmly 2011-12-29 13:05:15

+1

這取決於您想從中獲取隨機線的次數。如果你只想要這樣做,只有CVS解決方案更快(你不需要持續數據的開銷)。 但是,如果你想多次運行它把它放在數據庫中。在這種情況下,您只需解析一次cvs,並將所有讀取都發送到數據庫。 – 2011-12-29 13:11:09

+0

如果我的csv文件位於assets/images/file.csv中,如何添加文件路徑? – mrmnmly 2012-01-03 12:26:49