uniVocity CSV
Since Camel 2.15
This Data Format uses uniVocity-parsers for reading and writing 3 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 3 data formats based on uniVocity-parsers.
If you use Maven you can just 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 3 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 |
---|---|---|---|
|
| The delimiter of values. | |
|
| Whether or not all values must be quoted when writing them. | |
|
| The quote symbol. | |
|
| The quote escape symbol. | |
| The string representation of a null value. The default value is null. | ||
|
| Whether or not the empty lines must be ignored. The default value is true. | |
|
| Whether or not the trailing white spaces must be ignored. The default value is true. | |
|
| Whether or not the leading white spaces must be ignored. The default value is true. | |
|
| 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. | |
|
| Whether or not the header must be read in the first line of the test document The default value is false. | |
| The maximum number of record to read. | ||
| The String representation of an empty value. | ||
| The line separator of the files The default value is to use the JVM platform line separator. | ||
|
| The normalized line separator of the files The default value is a new line character. | |
|
| The comment symbol. The default value is #. | |
|
| Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at one. The default value is false. | |
|
| 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 throws an exception.
Usage example: marshalling a Map into CSV format
<route>
<from uri="direct:input"/>
<marshal>
<univocity-csv/>
</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 withfalse
); -
A map with all the values indexed by the headers (
asMap
option withtrue
).
All the rows can either:
-
be collected at once into a list (
lazyLoad
option withfalse
); -
be read on the fly using an iterator (
lazyLoad
option withtrue
).
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.