diff --git a/src/main/java/org/pentaho/di/dataset/DataSetCsvGroup.java b/src/main/java/org/pentaho/di/dataset/DataSetCsvGroup.java index e5c969d..6851b0b 100644 --- a/src/main/java/org/pentaho/di/dataset/DataSetCsvGroup.java +++ b/src/main/java/org/pentaho/di/dataset/DataSetCsvGroup.java @@ -4,6 +4,7 @@ import org.apache.commons.csv.CSVParser; import org.apache.commons.csv.CSVPrinter; import org.apache.commons.csv.CSVRecord; +import org.apache.commons.csv.QuoteMode; import org.apache.commons.lang.StringUtils; import org.apache.commons.vfs2.FileObject; import org.pentaho.di.core.exception.KettleDatabaseException; @@ -110,7 +111,7 @@ public static final List getAllRows( LogChannelInterface log, DataSetG try ( Reader reader = new InputStreamReader( new BufferedInputStream( KettleVFS.getInputStream( file ) ) ); - CSVParser csvParser = new CSVParser(reader, CSVFormat.DEFAULT); + CSVParser csvParser = new CSVParser(reader, getCsvFormat( setRowMeta )); ) { for ( CSVRecord csvRecord : csvParser ) { if (csvRecord.getRecordNumber()>1) { @@ -244,7 +245,8 @@ public static final void writeDataSetData( LoggingObjectInterface loggingObject, FileObject file = KettleVFS.getFileObject( dataSetFilename ); outputStream = KettleVFS.getOutputStream( file, false ); writer = new BufferedWriter( new OutputStreamWriter( outputStream ) ); - csvPrinter = new CSVPrinter( writer, CSVFormat.DEFAULT.withHeader( rowMeta.getFieldNames() ) ); + CSVFormat csvFormat = getCsvFormat(rowMeta); + csvPrinter = new CSVPrinter( writer, csvFormat ); for ( Object[] row : rows ) { List strings = new ArrayList<>(); @@ -277,6 +279,10 @@ public static final void writeDataSetData( LoggingObjectInterface loggingObject, } } + public static CSVFormat getCsvFormat(RowMetaInterface rowMeta) { + return CSVFormat.DEFAULT.withHeader( rowMeta.getFieldNames() ).withQuote( '\"' ).withQuoteMode( QuoteMode.MINIMAL ); + } + public static void createTable( DataSetGroup group, String tableName, RowMetaInterface rowMeta ) throws KettleDatabaseException {