4

When I use this function to write to a csv file all the data is embedded in double quotes.

Is there a way to write to csv file without the double quotes?

CSVWriter writer = new CSVWriter(new FileWriter(table+".csv"), '\t');
            writer.writeAll(rset, true);
            writer.close();

the file contains data in the form

"EMPNO" "ENAME" "JOB"   "MGR"   "HIREDATE"  "SAL"   "COMM"  "DEPTNO"    "TAG"   "LOOKUP"
"7369"  "SMITH" "CLERK" "7902"  "17-Dec-1980"   "800"   "2" "20"    "E" "1"
"7499"  "ALLEN" "SALESMAN"  "7698"  "20-Feb-1981"   "1600"  "2" "30"    "E" "2"
"7521"  "WARD"  "SALESMAN"  "7698"  "22-Feb-1981"   "1250"  "2" "30"    "E" "3"
"7566"  "JONES" "MANAGER"   "7839"  "02-Apr-1981"   "2975"  "2" "20"    "E" "2"
Aziz Shaikh
  • 16,245
  • 11
  • 62
  • 79
Shamis Shukoor
  • 2,515
  • 5
  • 29
  • 33

2 Answers2

17
CSVWriter writer = new CSVWriter(new FileWriter(table+".csv"), '\t', CSVWriter.NO_QUOTE_CHARACTER);
            writer.writeAll(rset, true);
            writer.close();

Reference: opencsv CSVWriter JavaDoc

m3o
  • 3,881
  • 3
  • 35
  • 56
  • 1
    what if some values contain tabs? – ililit Aug 10 '12 at 19:50
  • You cannot have value containing tabs when your CSV file is separated by tab. Same thing applies for comma or semicolon, or space, or else. –  Jan 23 '13 at 09:07
0

I'd like to add to the previous answer (don't have enough points to just add to comments) by @user591593 - while using the NO_QUOTE_CHARACTER constructor, you should escape the values yourself. See StringEscapeUtils

More over, it's best to specify a proper encoding, such as UTF-8, instead of assuming that the system default is the correct one:

CSVWriter writer = new CSVWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"), '\t', CSVWriter.NO_QUOTE_CHARACTER);

String s = "some fun \t string with \" double quotes and \n new lines";

writer.writeNext(StringEscapeUtils.escapeCsv(s));
user1454926
  • 181
  • 8