【发布时间】:2021-12-22 08:16:52
【问题描述】:
我想将以下 CSV 导入到 rails db:
"[{""id"":""actions"",""name"":""app"",""description""}]"
导入后,我总是得到:
"{\"id\":\"actions\",\"name\":\"app\",\"description\"]}"
我希望导入看起来像这样:
[{"id":,"actions":,"name":,"description",...}]"
我尝试使用 .gsub!(/"/,'') 但这会返回:
"[{id:actions,name:actions,description:}]"
问题是所有引号都被删除了,所以它只是
idinsted of"id"
我的代码是:
def import_app_version
path = Rails.root.join('db', 'csv_export', 'app_versions.csv')
counter = 0
puts "Inserts on table app_versions started..."
CSV.foreach(path, headers: true) do |row|
next if row.to_hash['modules'] == nil
row.to_hash['modules'].gsub!(/"/,'')
next if row.to_hash['deleted_at'] != nil
counter += 1
AppVersion.skip_callbacks = true
AppVersion.create!(row.to_hash)
end
AppVersion.skip_callbacks = false
puts "#{counter} inserts on table app_versions complete"
end
这样做的正确方法是什么,以便导入正常工作并按预期导入数据?
我已经搜索了半天,找到了很多答案,但最终都删除了上面显示的所有双引号。
如果有人知道以正确方式导入带有 JSON 内容的 csv 的方法,那就更好了。
【问题讨论】:
-
我不确定您的意图是什么,但您显示的数据非常不一致,并且在任何时候都不能代表有效的对象。例如第一个字符串显示了一个带有无效哈希的数组;第二个字符串显示了一个无效的哈希,其中包含错误的右括号“]”;第三无论它是什么都显示了一个带有无效哈希的数组,中间有一个错误的冒号,末尾有一个错误的双引号,而且它在途中的某个地方丢失了“app”字符串。基本上没有任何转换是有意义的。请修正问题和输出。