SFTP将CSV文件下载到内存

时间:2014-03-10 17:54:38

标签: ruby-on-rails ruby csv sftp

我有以下代码:

sftp = Net::SFTP.start('ftp.test.com','luigi', :password => 'pass_code')

data = sftp.download!("luigi/List.csv")

这会将data转换为如此字符串:

2015,This is, one value, test, 9820\r\n4003, This is also one value, test, 0393

我想将CSV文件中的每一行分成一个数组值。这是我的尝试:

data.split(/\r\n/)
data.each do |record|
    record.split(/,/)
end

这适用于大多数情况,但显然我的csv文件的第一行搞砸了,因为额外的逗号在我的数组中创建了另一个值:

2015,This is, one value, test, 9820

因为还有一个未被转义的逗号,我的数组看起来像这样:

["2015","This is", "one value","test","9820"]

我希望上面看起来像这样:

["2015","This is, one value","test","9820"]

甚至

["2015","This is one value","test","9820"]

是否有可能使用sftp将我的文件下载到内存中(不是本地的,我无处可存储它)并循环遍历文件中的每一行而不用额外的逗号抛弃它们?似乎问题的根源是我做不了类似的事情:

CSV.foreach(...) do |csv_row|

但我必须使用只返回一个字符串的sftp.download!,而不是“csv rows”数组。

0 个答案:

没有答案