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

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -