【问题标题】:API rails app import CSV into database through RESTAPI rails 应用程序通过 REST 将 CSV 导入数据库
【发布时间】:2016-05-26 03:40:50
【问题描述】:

使用 Postman 上传到 rails 应用中的 POST 路径(仅限 api),但不确定如何将其解析到 rails 应用中。

我们有一个模型来使用导入方法导入表,该方法采用 CSV 并循环将其添加到数据库中。

但是不确定如何使用 params[] 在控制器中通过 post 获取文件,因为我们将其作为二进制文件发布(我们也在 Postman 中尝试了表单方式,但运气不佳)。

我在控制器里

file = CSV.read(params[:file].path)

但是这会产生一个我不太清楚如何输入模型的数组(原始 CSV 文件中也有标题)

【问题讨论】:

    标签: ruby-on-rails api csv import


    【解决方案1】:

    您可以将您的 csv 上传到 S3 或 Dropbox,然后将 url 发布到服务器,服务器读取该 CSV 并导入到 DB。

    以下是从 URL 读取 CSV 的示例:

    app/services/process_csv.rb

    require 'csv'
    require 'net/http'
    
    class ProcessCsv    
      def initialize(csv_url)
        @csv_url = csv_url
      end
    
      def proesss
        uri = URI(@csv_url)
        csv_text = Net::HTTP.get(uri)
        csv = CSV.parse(csv_text, headers: true)
        csv.each do |row|
          # Process row here and import to DB here
        end
      end
    end
    

    然后你可以在你的控制器中使用ProcessCsv,你的控制器的参数只是一个指向CSV文件的URL,而不是CSV数据!

    【讨论】:

      【解决方案2】:

      您可以使用 foreach 解析 CSV。例如,如下所示。

      CSV.foreach(params[:file].path, headers: false) do |row|
        Model.create(name: row[0], email: row[1])
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多