ruby-on-rails - 数据被覆盖而不是附加到 CSV

标签 ruby-on-rails csv rake

我正在使用 rake 任务和 csv 模块来遍历一个 csv,提取并更改我需要的数据,然后将每个新数据行附加到第二个 csv。但是,每一行似乎都在覆盖/替换新 csv 中的前一行,而不是将其作为新行附加到它之后。我查看了文档并进行了谷歌搜索,但找不到任何以不同方式将行附加到 csv 的示例。

require 'csv'

namespace :replace do
    desc "replace variant id with variant sku"

    task :sku => :environment do
        file="db/master-list-3-28.csv"

        CSV.foreach(file) do |row|

            msku, namespace, key, valueType, value = row

            valueArray = value.split('|')

            newValueString = ""
            valueArray.each_with_index do |v, index|

                recArray = v.split('*')
                handle = recArray[0]
                vid = recArray[1]
                newValueString << handle
                newValueString << "*"
                variant = ShopifyAPI::Variant.find(vid) 
                newValueString << variant.sku

            end
            #end of value save the newvaluestring to new csv

            newFile = Rails.root.join('lib/assets', 'newFile.csv')

            CSV.open(newFile, "wb") do |csv|
              csv << [newValueString]
            end

        end
    end
end

最佳答案

你打开文件的方式不对,应该是a+。请参阅文档中的详细信息:http://ruby-doc.org/core-2.2.4/IO.html#method-c-new

此外,您可能希望只打开该文件一次,而不是每一行。

关于ruby-on-rails - 数据被覆盖而不是附加到 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36287807/

相关文章:

mysql - 将 SQL 文件导入 Rails 数据库

ruby-on-rails - Ruby on Rails 风格指南,方法参数周围的括号

ruby-on-rails - 使用 File.open 写入 YAML 文件会换行更长的行

ruby-on-rails - 具有simple_form和浅层嵌套资源的Rails 4 Action 路线

ruby - 列出 Roda 应用程序中的所有路线

ruby - 使用 Rake 运行 Ruby 单元测试

python - 将字符串列表写入 csv 文件时获取逗号分隔的费用

python - 如何使用 Pandas 将用户定义的列名写入 csv 文件?

python - 尝试将日期和时间附加到文件名

ruby-on-rails - 运行 rake 任务时出现语法错误