Ruby on rails Ruby:数据不';没有引号,但CSV.parse会引发CSV::Malformedcsvror:第x行中的非法引用
我正在使用ruby CSV.parse从我的Rails项目的Google工作表中读取实时数据。 在我的seeds.rb文件中,我正在读取如下csv数据Ruby on rails Ruby:数据不';没有引号,但CSV.parse会引发CSV::Malformedcsvror:第x行中的非法引用,ruby-on-rails,ruby,csv,Ruby On Rails,Ruby,Csv,我正在使用ruby CSV.parse从我的Rails项目的Google工作表中读取实时数据。 在我的seeds.rb文件中,我正在读取如下csv数据 point_csv_path = "https://docs.google.com/spreadsheets/d/{key}/gviz/tq?tqx=out:csv&sheet=points" CSV.parse(open(point_csv_path), :headers=>true).each do |row| Point
point_csv_path = "https://docs.google.com/spreadsheets/d/{key}/gviz/tq?tqx=out:csv&sheet=points"
CSV.parse(open(point_csv_path), :headers=>true).each do |row|
Point.create!(
point_id: row["point_id"].to_i,
point_type: row["point_type"],
identifier: row["identifier"].to_i,
longitude: row["longitude"],
latitude: row["latitude"],
location: row["location"],
ordering: row["ordering"].to_i)
end
对于GoogleSheet中的数据,我从在线来源手动复制和粘贴,数据根本不包含任何引号。google表单中的前3行数据如下所示:
point_id point_type identifier longitude latitude location ordering
1 sensor 1 -71.050054 42.360152 null 0
2 sensor 2 -71.049428 42.359373 null 0
3 sensor 3 -71.049337 42.358969 null 0
运行$railsdb:seed
后,我收到以下错误消息
rails aborted!
CSV::MalformedCSVError: Illegal quoting in line 3.
/media/anyan/file/rails_project/db/seeds.rb:33:in `<main>'
/media/anyan/file/rails_project/bin/rails:9:in `<top (required)>'
/media/anyan/file/rails_project/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)
查看前几行数据的确切外观会很有帮助。在sublime文本编辑器中打开csv。我在导入CSV时遇到了同样的问题。Postgres不处理空字节。如果文件是从MSSQL或将空字节视为空字节的东西导出的,则可能会出现错误。升华将能够显示
字节。它还将显示ecoding中的任何?
错误。另一个尝试是在读取CSV文件时设置编码。但首先需要修复空字节。此外,如果文件的编码是二进制的,这将否定postgres可以避免的任何编码更改。您是否尝试将col_sep设置为逗号或制表符?另一个问题可能是线端处理(CR/LF)。
"point_id","point_type","identifier","longitude","latitude","location","ordering"
"1","sensor","1","-71.050054","42.360152","null","0"
"2","sensor","2","-71.049428","42.359373","null","0"
"3","sensor","3","-71.049337","42.358969","null","0"