我有几个包含数千列的大型 csv 文件,我需要导入这些文件,然后删除基于列内容的整个列。有没有一种简单的方法可以在 Ruby 中处理这个问题?
我可以转置数据,然后只删除行,但我想知道是否有一种在语法上更含糖的方式来做这件事。
您需要迭代行并使用Array#slice!
.
就像是:
my_array.each do |row|
row.slice!(3) if <insert condition>
end
应该这样做。
由于您需要将 csv 中的所有列分配给数据库中的列,因此您只需忽略 csv 中不需要的列。这篇博文有一个很好的例子。
在黑暗中拍摄,但如果标准足够简单,并且您可以以某种方式对数据进行采样以查看需要删除哪些列,也许您可以首先跳过导入列,如果可能的话,这应该更快而不是切片,这是另一种方式。
我最终使用转置,然后使用 reverse_each 从底行切片开始工作!在需要删除的行上。谢谢您的帮助。