0
我从SQL导出表和查询。Ruby CSV从MySQL导出的字符串和数字csv
红宝石(1.9+)的方式来阅读CSV似乎是:
require 'csv'
CSV.foreach("exported_mysql_table.csv", {:headers=>true}) do |row|
puts row
end
伟大的工程,如果你的数据是这样的:
"name","email","potato"
"Bob","[email protected]","omnomnom"
"Charlie","[email protected]","andcheese"
"Doug","[email protected]","usemeltattack"
工作正常(第一行是标题,属性)。但是,如果数据是这样的:
"id","name","email","potato"
1,"Bob","[email protected]","omnomnom"
2,"Charlie","[email protected]","andcheese"
4,"Doug","[email protected]","usemeltattack"
然后我们得到的错误:
.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/csv.rb:1894:in `block (2 levels) in shift': Missing or stray quote in line 2 (CSV::MalformedCSVError)
我想这是因为ID存储为数字而不是一个字符串,因此没有引号,并且csv解析器期望所有条目都有引号。理想情况下,我想阅读“Bob”字符串和1作为数字(并将其填入散列哈希)
(已尝试'FasterCSV',该宝石由于红宝石变成'csv'1.9)
编辑:
指出的代码工作正常(DERP),一直在寻找在错误的地方,它是多线领域的错误,问题转移到Ruby CSV read multiline fields
唉问题是多线!我应该给出一个更好的例子,(并且实际测试了这一个-_-)。要开始新的问题。谢谢! – xxjjnn