[英]Error: Importing Data CSV Rails 4
我對使用CSV將數據導入SQL數據庫的概念非常陌生。 我已經關注了一些stackoverflow帖子,但出現錯誤。 錯誤狀態為Errno::ENOENT: No such file or directory @ rb_sysopen - products.csv
運行rake import:data
后, Errno::ENOENT: No such file or directory @ rb_sysopen - products.csv
。 我的application.rb文件中需要csv,也創建了一個csv文件並將其放在TMP中。 到目前為止,這是我的代碼。
我知道我可能會向社區提出很多要求,但是如果有人要回答這個問題,您能否提供更多有關CSV和rake函數的見解。 非常感謝!!!
<b>import.rake</b>
namespace :import do
desc "imports data from a csv file"
task :data => :environment do
require 'csv'
CSV.foreach('tmp/products.csv') do |row|
name = row[0]
price = row[1].to_i
Product.create( name: name, price: price )
end
end
end
指定CSV文件的完整路徑。
例如,如果文件在/tmp/
使用:
CSV.foreach('/tmp/products.csv') do |row|
如果products.csv
文件位於應用程序的tmp
目錄中,請使用:
CSV.foreach(Rails.root.join('tmp', 'products.csv')) do |row|
我遇到了類似的情況,但是忘記將兩個括號都放在括號中,因此您可能要嘗試從以下位置開始:
Product.create( name: name, price: price )
至:
Product.create({ name: name, price: price })
查看smarter_csv寶石。
以最簡單的形式,您可以執行以下操作:
SmarterCSV.process('tmp/products.csv').each do |hash|
Product.create( hash )
end
將smarter_csv添加到您的Gemfile中,以便在您的Rake任務中需要環境時自動加載
這給您:
namespace :import do
desc 'imports data from given csv file'
task :data, [:filename] => :environment do |t, args|
fail "File not found" unless File.exists? args[:filename]
options = {} # add options if needed
SmarterCSV.process( args[:filename], options).each do |hash|
Product.create( hash )
end
end
end
這樣稱呼它:
rake import:data['/tmp/products.csv']
另請參閱: https : //github.com/tilo/smarter_csv
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.