uniVocity CSV

Since Camel 2.15

This Data Format uses uniVocity-parsers for reading and writing three kinds of tabular data text files:

  • CSV (Comma Separated Values), where the values are separated by a symbol (usually a comma)

  • fixed-width, where the values have known sizes

  • TSV (Tabular Separated Values), where the fields are separated by a tabulation

Thus, there are three data formats based on uniVocity-parsers.

If you use Maven, you can add the following to your pom.xml, substituting the version number for the latest and greatest release.

<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-univocity-parsers</artifactId>
    <version>x.x.x</version>
</dependency>

Options

Most configuration options of the uniVocity-parsers are available in the data formats. If you want more information about a particular option, please refer to their documentation page.

The three data formats share common options and have dedicated ones, this section presents them all.

Options

The uniVocity CSV dataformat supports 17 options, which are listed below.

Name Default Java Type Description

delimiter (common)

,

String

The delimiter of values.

quoteAllFields (common)

false

Boolean

Whether or not all values must be quoted when writing them.

quote (advanced)

"

String

The quote symbol.

quoteEscape (advanced)

"

String

The quote escape symbol.

nullValue (advanced)

String

The string representation of a null value. The default value is null.

skipEmptyLines (common)

true

Boolean

Whether or not the empty lines must be ignored. The default value is true.

ignoreTrailingWhitespaces (common)

true

Boolean

Whether or not the trailing white spaces must be ignored. The default value is true.

ignoreLeadingWhitespaces (common)

true

Boolean

Whether or not the leading white spaces must be ignored. The default value is true.

headersDisabled (common)

false

Boolean

Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false.

headerExtractionEnabled (common)

false

Boolean

Whether or not the header must be read in the first line of the test document. The default value is false.

numberOfRecordsToRead (advanced)

Integer

The maximum number of record to read.

emptyValue (advanced)

String

The String representation of an empty value.

lineSeparator (advanced)

String

The line separator of the files. The default value is to use the JVM platform line separator.

normalizedLineSeparator (advanced)

String

The normalized line separator of the files. The default value is a new line character.

comment (advanced)

#

String

The comment symbol. The default value is #.

lazyLoad (common)

false

Boolean

Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false.

asMap (common)

false

Boolean

Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false.

Marshalling usages

The marshalling accepts either:

  • A list of maps (List<Map<String, ?>>), one for each line

  • A single map (Map<String, ?>), for a single line

Any other body will throw an exception.

Usage example: marshalling a Map into CSV format

<route>
    <from uri="direct:input"/>
    <marshal>
        <univocity-csv/>
    </marshal>
    <to uri="mock:result"/>
</route>

Usage example: marshalling a Map into fixed-width format

<route>
    <from uri="direct:input"/>
    <marshal>
        <univocity-fixed padding="_">
            <univocity-header length="5"/>
            <univocity-header length="5"/>
            <univocity-header length="5"/>
        </univocity-fixed>
    </marshal>
    <to uri="mock:result"/>
</route>

Usage example: marshalling a Map into TSV format

<route>
    <from uri="direct:input"/>
    <marshal>
        <univocity-tsv/>
    </marshal>
    <to uri="mock:result"/>
</route>

Unmarshalling usages

The unmarshalling uses an InputStream in order to read the data.

Each row produces either:

  • a list with all the values in it (asMap option with false);

  • A map with all the values indexed by the headers (asMap option with true).

All the rows can either:

  • be collected at once into a list (lazyLoad option with false);

  • be read on the fly using an iterator (lazyLoad option with true).

Usage example: unmarshalling a CSV format into maps with automatic headers

<route>
    <from uri="direct:input"/>
    <unmarshal>
        <univocity-csv headerExtractionEnabled="true" asMap="true"/>
    </unmarshal>
    <to uri="mock:result"/>
</route>

Usage example: unmarshalling a fixed-width format into lists

<route>
    <from uri="direct:input"/>
    <unmarshal>
        <univocity-fixed>
            <univocity-header length="5"/>
            <univocity-header length="5"/>
            <univocity-header length="5"/>
        </univocity-fixed>
    </unmarshal>
    <to uri="mock:result"/>
</route>

Spring Boot Auto-Configuration

When using univocityCsv with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-univocity-parsers-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>

The component supports 50 options, which are listed below.

Name Description Default Type

camel.dataformat.univocity-csv.as-map

Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false.

false

Boolean

camel.dataformat.univocity-csv.comment

The comment symbol. The default value is #.

#

String

camel.dataformat.univocity-csv.delimiter

The delimiter of values.

,

String

camel.dataformat.univocity-csv.empty-value

The String representation of an empty value.

String

camel.dataformat.univocity-csv.enabled

Whether to enable auto configuration of the univocityCsv data format. This is enabled by default.

Boolean

camel.dataformat.univocity-csv.header-extraction-enabled

Whether or not the header must be read in the first line of the test document. The default value is false.

false

Boolean

camel.dataformat.univocity-csv.headers-disabled

Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false.

false

Boolean

camel.dataformat.univocity-csv.ignore-leading-whitespaces

Whether or not the leading white spaces must be ignored. The default value is true.

true

Boolean

camel.dataformat.univocity-csv.ignore-trailing-whitespaces

Whether or not the trailing white spaces must be ignored. The default value is true.

true

Boolean

camel.dataformat.univocity-csv.lazy-load

Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false.

false

Boolean

camel.dataformat.univocity-csv.line-separator

The line separator of the files. The default value is to use the JVM platform line separator.

String

camel.dataformat.univocity-csv.normalized-line-separator

The normalized line separator of the files. The default value is a new line character.

String

camel.dataformat.univocity-csv.null-value

The string representation of a null value. The default value is null.

String

camel.dataformat.univocity-csv.number-of-records-to-read

The maximum number of record to read.

Integer

camel.dataformat.univocity-csv.quote

The quote symbol.

"

String

camel.dataformat.univocity-csv.quote-all-fields

Whether or not all values must be quoted when writing them.

false

Boolean

camel.dataformat.univocity-csv.quote-escape

The quote escape symbol.

"

String

camel.dataformat.univocity-csv.skip-empty-lines

Whether or not the empty lines must be ignored. The default value is true.

true

Boolean

camel.dataformat.univocity-fixed.as-map

Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false.

false

Boolean

camel.dataformat.univocity-fixed.comment

The comment symbol. The default value is #.

#

String

camel.dataformat.univocity-fixed.empty-value

The String representation of an empty value.

String

camel.dataformat.univocity-fixed.enabled

Whether to enable auto configuration of the univocityFixed data format. This is enabled by default.

Boolean

camel.dataformat.univocity-fixed.header-extraction-enabled

Whether or not the header must be read in the first line of the test document. The default value is false.

false

Boolean

camel.dataformat.univocity-fixed.headers-disabled

Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false.

false

Boolean

camel.dataformat.univocity-fixed.ignore-leading-whitespaces

Whether or not the leading white spaces must be ignored. The default value is true.

true

Boolean

camel.dataformat.univocity-fixed.ignore-trailing-whitespaces

Whether or not the trailing white spaces must be ignored. The default value is true.

true

Boolean

camel.dataformat.univocity-fixed.lazy-load

Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false.

false

Boolean

camel.dataformat.univocity-fixed.line-separator

The line separator of the files. The default value is to use the JVM platform line separator.

String

camel.dataformat.univocity-fixed.normalized-line-separator

The normalized line separator of the files. The default value is a new line character.

String

camel.dataformat.univocity-fixed.null-value

The string representation of a null value. The default value is null.

String

camel.dataformat.univocity-fixed.number-of-records-to-read

The maximum number of record to read.

Integer

camel.dataformat.univocity-fixed.padding

The padding character. The default value is a space.

String

camel.dataformat.univocity-fixed.record-ends-on-newline

Whether or not the record ends on new line. The default value is false.

false

Boolean

camel.dataformat.univocity-fixed.skip-empty-lines

Whether or not the empty lines must be ignored. The default value is true.

true

Boolean

camel.dataformat.univocity-fixed.skip-trailing-chars-until-newline

Whether or not the trailing characters until new line must be ignored. The default value is false.

false

Boolean

camel.dataformat.univocity-tsv.as-map

Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false.

false

Boolean

camel.dataformat.univocity-tsv.comment

The comment symbol. The default value is #.

#

String

camel.dataformat.univocity-tsv.empty-value

The String representation of an empty value.

String

camel.dataformat.univocity-tsv.enabled

Whether to enable auto configuration of the univocityTsv data format. This is enabled by default.

Boolean

camel.dataformat.univocity-tsv.escape-char

The escape character.

\

String

camel.dataformat.univocity-tsv.header-extraction-enabled

Whether or not the header must be read in the first line of the test document. The default value is false.

false

Boolean

camel.dataformat.univocity-tsv.headers-disabled

Whether or not the headers are disabled. When defined, this option explicitly sets the headers as null which indicates that there is no header. The default value is false.

false

Boolean

camel.dataformat.univocity-tsv.ignore-leading-whitespaces

Whether or not the leading white spaces must be ignored. The default value is true.

true

Boolean

camel.dataformat.univocity-tsv.ignore-trailing-whitespaces

Whether or not the trailing white spaces must be ignored. The default value is true.

true

Boolean

camel.dataformat.univocity-tsv.lazy-load

Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false.

false

Boolean

camel.dataformat.univocity-tsv.line-separator

The line separator of the files. The default value is to use the JVM platform line separator.

String

camel.dataformat.univocity-tsv.normalized-line-separator

The normalized line separator of the files. The default value is a new line character.

String

camel.dataformat.univocity-tsv.null-value

The string representation of a null value. The default value is null.

String

camel.dataformat.univocity-tsv.number-of-records-to-read

The maximum number of record to read.

Integer

camel.dataformat.univocity-tsv.skip-empty-lines

Whether or not the empty lines must be ignored. The default value is true.

true

Boolean