使用Ruby和Sinatra,如何上传一个csv文件并将每一行插入到postgres数据库中?

用户名

我正在使用Sequel,Sinatra,Postgres和ruby。我有一个上传csv文件的表单,该文件可以正常工作,然后问题是将csv文件中的字段解析并将其插入到postgres数据库中。csv文件的结构如下:

first,last,designation,email,phone,company,remarks,owner,date
John,McAndrew,CEO,[email protected],44 113 388 4300,Callcredit Information Group,none,[email protected],now()

postgres数据库具有相同的字段。

我想保留标题,然后遍历记录(可能有100s)并插入数据库。我首先仅尝试一个字段,然后需要插入所有字段。到目前为止,我的红宝石代码是:

 require 'csv'
    post '/upload' do
      file_data = params[:myfile][:tempfile].read
      #file_data = params[:file].read
      csv_rows  = CSV.parse(file_data, headers: true)
      owner = '[email protected]'
      csv_rows.map do |row| 
       {firstname => row[:first]}
          DB[:prospects].insert( :first =>  firstname, :owner => owner )
      end
     end

这不起作用,我得到以下信息:PG :: UndefinedColumn:错误:列“名字”不存在。

然后我尝试了:

 require 'csv'
    post '/upload' do
      file_data = params[:myfile][:tempfile].read
      #file_data = params[:file].read
      csv_rows  = CSV.parse(file_data, headers: true)
      owner = '[email protected]'
      csv_rows.each do |row| 

       DB[:prospects].insert( :first =>  row[:first], :owner => owner )

          end
      end

它不返回错误,但仅插入变量所有者,它完全忽略row [:first]或找不到它。

正确的方法是什么?谢谢!

这有效(在SoulRebel的帮助下):

post '/upload' do
  file_data = params[:myfile][:tempfile].read
  #file_data = params[:file].read
  csv_rows  = CSV.parse(file_data, headers: true)
  owner = '[email protected]'
  csv_rows.each do |row| 

   DB[:prospects].insert( :first =>  row[:first], :owner => owner )

      end
end

经过反复试验,我发现这也是可行的:

post '/uploading' do
  file_data = params[:myfile][:tempfile].read
  csv_rows  = CSV.parse(file_data, headers: true, header_converters: :symbol)
  owner = '[email protected]'
  remarks = 'none yet'
  csv_rows.each do |row| 
      DB[:prospects].insert( :first =>  row[:first], :last => row[:last], :designation => row[:designation], :email => row[:email], :phone => row[:phone], :company => row[:company], :industry => row[:industry], :city => row[:city], :country => row[:country], :status => row[:status],  :remarks => remarks, :owner => owner )
    end
  return "File successfully uploaded"
end

注意“ header_converters :: symbol”的添加

一如既往,感谢SO社区。

Walid Da。

尝试这个:

CSV.foreach($csv_fname, :headers => true) do |csv_obj|
    puts csv_obj['first'] #just to verify that parsing is working well
    DB[:prospects].insert( :first =>  cvs_obj['first'], :owner => csv_obj['owner'] )

end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在SQL中为select的每一行将行插入数据库?

来自分类Dev

如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

来自分类Dev

一行的每两个输入保存在单独的数据库行中

来自分类Dev

如何在文件中分离数据并将每一行变成一个列表?

来自分类Dev

如何使用Ruby和SQLite3从数据库中选择一个值?

来自分类Dev

从文件的每一行取一个值到php中每个变量

来自分类Dev

使用PHP,Ajax和JavaScript将数据库中每一行的数据放入单独的div中

来自分类Dev

检查另一个csv文件中每一行的csv文件值

来自分类Dev

Ruby:如何将许多.txt文件中的每一行存储到一个变量中

来自分类Dev

雪花如何在临时表的每一行上循环,并将其值插入到另一个表中,而每个表的值都是一行?

来自分类Dev

避免将每一行多次存储到mysql数据库中

来自分类Dev

在JMeter中,一个用户如何连续读取CSV文件的每一行?

来自分类Dev

数据库不同div中的每一行

来自分类Dev

如何在SQL中为select的每一行将行插入数据库?

来自分类Dev

如何从sql中提取数据,将列添加到一行并将其插入到另一个sql表中?

来自分类Dev

如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

来自分类Dev

如何在BASH中查找和替换文件每一行中的最后一个空格?

来自分类Dev

如何查询数据库中的表并将其数据复制到一个表中?

来自分类Dev

如何将数据从一个表插入和检索到mysql数据库中的另一个表

来自分类Dev

使用PHP,Ajax和JavaScript将数据库中每一行的数据放入单独的div中

来自分类Dev

如何使用Ruby和SQLite3从数据库中选择一个值?

来自分类Dev

如何使Textarea和.php文件中的提交按钮对数据库中的每一行隐藏?

来自分类Dev

如何使用MSSQL将行“乘”到另一个表中的每一行

来自分类Dev

如何使用 PHP 为数据库中的每一行创建一个唯一的页面?

来自分类Dev

如何将一个数据库中的一行插入到其他数据库中的同一个表中?

来自分类Dev

在数据框中的每一行插入一个空行

来自分类Dev

如何通过将最后一行值和插入值相加来向 sql 数据库插入一个值

来自分类Dev

Java,从 Derby 数据库中获取数据并将每一行转换为 Json 对象

来自分类Dev

如何读取 CSV 并将每一行调整 + 写入另一个 CSV?

Related 相关文章

  1. 1

    如何在SQL中为select的每一行将行插入数据库?

  2. 2

    如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

  3. 3

    一行的每两个输入保存在单独的数据库行中

  4. 4

    如何在文件中分离数据并将每一行变成一个列表?

  5. 5

    如何使用Ruby和SQLite3从数据库中选择一个值?

  6. 6

    从文件的每一行取一个值到php中每个变量

  7. 7

    使用PHP,Ajax和JavaScript将数据库中每一行的数据放入单独的div中

  8. 8

    检查另一个csv文件中每一行的csv文件值

  9. 9

    Ruby:如何将许多.txt文件中的每一行存储到一个变量中

  10. 10

    雪花如何在临时表的每一行上循环,并将其值插入到另一个表中,而每个表的值都是一行?

  11. 11

    避免将每一行多次存储到mysql数据库中

  12. 12

    在JMeter中,一个用户如何连续读取CSV文件的每一行?

  13. 13

    数据库不同div中的每一行

  14. 14

    如何在SQL中为select的每一行将行插入数据库?

  15. 15

    如何从sql中提取数据,将列添加到一行并将其插入到另一个sql表中?

  16. 16

    如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

  17. 17

    如何在BASH中查找和替换文件每一行中的最后一个空格?

  18. 18

    如何查询数据库中的表并将其数据复制到一个表中?

  19. 19

    如何将数据从一个表插入和检索到mysql数据库中的另一个表

  20. 20

    使用PHP,Ajax和JavaScript将数据库中每一行的数据放入单独的div中

  21. 21

    如何使用Ruby和SQLite3从数据库中选择一个值?

  22. 22

    如何使Textarea和.php文件中的提交按钮对数据库中的每一行隐藏?

  23. 23

    如何使用MSSQL将行“乘”到另一个表中的每一行

  24. 24

    如何使用 PHP 为数据库中的每一行创建一个唯一的页面?

  25. 25

    如何将一个数据库中的一行插入到其他数据库中的同一个表中?

  26. 26

    在数据框中的每一行插入一个空行

  27. 27

    如何通过将最后一行值和插入值相加来向 sql 数据库插入一个值

  28. 28

    Java,从 Derby 数据库中获取数据并将每一行转换为 Json 对象

  29. 29

    如何读取 CSV 并将每一行调整 + 写入另一个 CSV?

热门标签

归档