簡體   English   中英

錯誤:導入數據CSV Rails 4

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM