RUBY-CSV-Gem生成随机引号

RUBY-CSV-Gem生成随机引号,ruby,csv,Ruby,Csv,我正在尝试从SQL查询结果生成csv文件。 99%的情况下,它工作正常,但在CSV文件的某些行中,它会在行的开始和结束处生成引号 问题如下: 我已经检查了SQL单元格的内容,没有问题 因此,我认为问题发生在生成文件时 这里是文件生成的方式 #load query result dataset = DB[ "select id ,action from

我正在尝试从SQL查询结果生成csv文件。 99%的情况下,它工作正常,但在CSV文件的某些行中,它会在行的开始和结束处生成引号

问题如下:

我已经检查了SQL单元格的内容,没有问题

因此,我认为问题发生在生成文件时

这里是文件生成的方式

#load query result
dataset = DB[ "select
                        id
                       ,action
              from
                        some_table"]

#generate csv file
CSV.open("#{table}.csv", "wb",:write_headers=> true, :headers => ["id_cliente|""acao"] ) do |csv|
      dataset.each do |dbrow|
        csv << [
                "#{dbrow[:id_cliente]}"
                + "|" +
                "#{dbrow[:acao]}"
                ]
        end
end

new_object = $bucket_response.objects.build("#{table}.csv")
new_object.content = open("#{table}.csv")
new_object.acl = :public_read
new_object.save

是否仍有解决方法或改进生成过程?

必须指定分隔符,而不是将其作为字符串传递:

CSV.open("#{table}.csv", "wb", col_sep: '|', ..., headers: ['id_cliente', 'acao']
    ...
    csv << [dbrow[:id_cliente], dbrow[:acao]]
    ...

要了解更多信息,请查看和文档

这是否只发生在与Thayane的连线上?事实上,我仔细看了一下,发现它的名字Thayane上有一条断线。现在我有了一个新的问题。是的,我有一种感觉,在thayane之后有一条新的路线。csv将多行字段封装在引号中。由于mdesantis的回答中提到的问题,算法认为整行是一个字段。@eiko你是对的。绳子上有一根绳子。现在它工作得很好。谢谢。不要做{dbrow[:id\u cliente]}。只需执行dbrow[:id_cliente]。@mdesantis实际上我的字符串中有一个char10,所以它正在破坏单元格。总之,您的提示提高了文件的速度和大小。谢谢