Ruby CSV.open need to remove quotes and null characters -
i retrieving large hash of results database query , writing them csv file. code block below takes results , creates csv. quote_char:
option replace quotes null characters need create tab-delimited file.
however, null characters getting converted "" when loaded destination remove those. if leave out quote_char:
every field double quoted causes same result.
how can remove null characters?
begin csv.open("#{file_path}"'file.tab', "wb", options = {col_sep: "\t", quote_char: "\0"}) |csv| csv << ["key","channel"] series_1_results.each_hash |series_1| csv << ["#{series_1['key']}","#{series_1['channel']}"] end end end
as stated in csv documentation have set quote_char
character, , character always used quote empty fields.
it seems solution in case remove used quote_chars
created csv file. can this:
quotedfile = file.read("#{file_path}"'file.tab') unquotedfile = quotedfile.gsub("\0", "") file.open("#{file_path}"'unquoted_file.tab',"w") { |file| file.puts replace }
i assume here null's escaped fields. if that's not case use default quote_char: '"'
, gsub(',"",', '')
should handle almost possible cases of fields containing special characters.
but note results of query large might more practical prepare csv file on own , avoid processing outputs twice. write:
file.open("#{file_path}"'unquoted_file.tab',"w") |file| csv.puts ["key","channel"] series_1_results.each_hash |series_1| csv.puts ["#{series_1['key']},#{series_1['channel']}"] end end
once more, might need handle fields special characters.
Comments
Post a Comment