Modified: websites/production/camel/content/csv.html ============================================================================== --- websites/production/camel/content/csv.html (original) +++ websites/production/camel/content/csv.html Sun Dec 22 04:39:22 2013 @@ -86,46 +86,21 @@ <tbody> <tr> <td valign="top" width="100%"> -<div class="wiki-content maincontent"><h2 id="CSV-CSV">CSV</h2> - -<p>The CSV <a shape="rect" href="data-format.html">Data Format</a> uses <a shape="rect" class="external-link" href="http://commons.apache.org/proper/commons-csv/">Apache Commons CSV</a> to handle CSV payloads (Comma Separated Values) such as those exported/imported by Excel.</p> - -<h3 id="CSV-Options">Options</h3> - -<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Option </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> config </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> CSVConfig </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Can be used to set a custom <code>CSVConfig</code> object. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> strategy </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> CSVStrategy </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Can be used to set a custom <code>CSVStrategy</code>; the default is <code>CSVStrategy.DEFAULT_STRATEGY</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> autogenColumns </p></td><td colspan="1" rowspan="1" class="c onfluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Whether or not columns are auto-generated in the resulting CSV. The default value is <code>true</code>; subsequent messages use the previously created columns with new fields being added at the end of the line. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> delimiter </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> String </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.4:</strong> The column delimiter to use; the default value is "<code>,</code>". </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> skipFirstLine </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> boolean </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.10:</strong> Whether or not to skip the first line of CSV input when unmarshalling (e.g. if the content has headers on the first line); the default value is < code>false</code>. </p></td></tr></tbody></table></div> - - -<h3 id="CSV-MarshallingaMaptoCSV">Marshalling a Map to CSV</h3> -<p>The component allows you to marshal a Java Map (or any other message type that can be <a shape="rect" href="type-converter.html">converted</a> in a Map) into a CSV payload.</p> - -<p>An example: if you send a message with this map...</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<div class="wiki-content maincontent"><h2 id="CSV-CSV">CSV</h2><p>The CSV <a shape="rect" href="data-format.html">Data Format</a> uses <a shape="rect" class="external-link" href="http://commons.apache.org/proper/commons-csv/">Apache Commons CSV</a> to handle CSV payloads (Comma Separated Values) such as those exported/imported by Excel.</p><h3 id="CSV-Options">Options</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>config</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>CSVConfig</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Can be used to set a custom <code>CSVConfig</code> object.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>strategy</p></td><td colsp an="1" rowspan="1" class="confluenceTd"><p>CSVStrategy</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Can be used to set a custom <code>CSVStrategy</code>; the default is <code>CSVStrategy.DEFAULT_STRATEGY</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>autogenColumns</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Whether or not columns are auto-generated in the resulting CSV. The default value is <code>true</code>; subsequent messages use the previously created columns with new fields being added at the end of the line.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>delimiter</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.4:</strong> The column delimiter to use; the default value is "<code>,</code>".</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>skipFirstLine</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> Whether or not to skip the first line of CSV input when unmarshalling (e.g. if the content has headers on the first line); the default value is <code>false</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">lazyLoad</td><td colspan="1" rowspan="1" class="confluenceTd">boolean</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.12.2:</strong><span><span> Whether or not to </span></span><span style="line-height: 1.4285715;">Sequential access CSV input through an iterator which could avoid OOM exception when processing huge CSV file; </span><span>the default value is false </span></td></tr></tbody></table></div><h3 id="CSV-MarshallingaMaptoCSV">Marshalling a Map to CSV</h3><p>The component allows you to marshal a Java Map (or any other message type t hat can be <a shape="rect" href="type-converter.html">converted</a> in a Map) into a CSV payload.</p><p>An example: if you send a message with this map...</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ Map<String, Object> body = new HashMap<String, Object>(); body.put("foo", "abc"); body.put("bar", 123); ]]></script> -</div></div> -<p>... through this route ...</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>... through this route ...</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ from("direct:start"). marshal().csv(). to("mock:result"); ]]></script> -</div></div> - -<p>... you will end up with a String containing this CSV message</p> -<div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent"> +</div></div><p>... you will end up with a String containing this CSV message</p><div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent"> <pre>abc,123</pre> -</div></div> -<p>Sending the Map below through this route will result in a CSV message that looks like <code>foo,bar</code></p> - -<h3 id="CSV-UnmarshallingaCSVmessageintoaJavaList">Unmarshalling a CSV message into a Java List</h3> -<p>Unmarshalling will transform a CSV messsage into a Java List with CSV file lines (containing another List with all the field values).</p> - -<p>An example: we have a CSV file with names of persons, their IQ and their current activity.</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>Sending the Map below through this route will result in a CSV message that looks like <code>foo,bar</code></p><h3 id="CSV-UnmarshallingaCSVmessageintoaJavaList">Unmarshalling a CSV message into a Java List</h3><p>Unmarshalling will transform a CSV messsage into a Java List with CSV file lines (containing another List with all the field values).</p><p>An example: we have a CSV file with names of persons, their IQ and their current activity.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: sql; gutter: false" type="syntaxhighlighter"><![CDATA[ Jack Dalton, 115, mad at Averell Joe Dalton, 105, calming Joe @@ -133,19 +108,13 @@ William Dalton, 105, keeping Joe from ki Averell Dalton, 80, playing with Rantanplan Lucky Luke, 120, capturing the Daltons ]]></script> -</div></div> - -<p>We can now use the CSV component to unmarshal this file:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>We can now use the CSV component to unmarshal this file:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ from("file:src/test/resources/?fileName=daltons.csv&noop=true"). unmarshal().csv(). to("mock:daltons"); ]]></script> -</div></div> - -<p>The resulting message will contain a <code>List<List<String>></code> like...</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>The resulting message will contain a <code>List<List<String>></code> like...</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ List<List<String>> data = (List<List<String>>) exchange.getIn().getBody(); for (List<String> line : data) { @@ -153,46 +122,23 @@ for (List<String> line : data) { line.get(0), line.get(1), line.get(2))); } ]]></script> -</div></div> - -<h3 id="CSV-MarshallingaList<Map>toCSV">Marshalling a List<Map> to CSV</h3> -<p><strong>Available as of Camel 2.1</strong></p> - -<p>If you have multiple rows of data you want to be marshalled into CSV format you can now store the message payload as a <code>List<Map<String, Object>></code> object where the list contains a Map for each row.</p> - -<h3 id="CSV-FilePollerofCSV,thenunmarshaling">File Poller of CSV, then unmarshaling</h3> - -<p>Given a bean which can handle the incoming data...</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>MyCsvHandler.java</b></div><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -// Some comments here +</div></div><h3 id="CSV-MarshallingaList<Map>toCSV">Marshalling a List<Map> to CSV</h3><p><strong>Available as of Camel 2.1</strong></p><p>If you have multiple rows of data you want to be marshalled into CSV format you can now store the message payload as a <code>List<Map<String, Object>></code> object where the list contains a Map for each row.</p><h3 id="CSV-FilePollerofCSV,thenunmarshaling">File Poller of CSV, then unmarshaling</h3><p>Given a bean which can handle the incoming data...</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeHeader panelHeader pdl" style="border-bottom-width: 1px;"><b>MyCsvHandler.java</b></div><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[// Some comments here public void doHandleCsvData(List<List<String>> csvData) { // do magic here } ]]></script> -</div></div> - -<p>... your route then looks as follows</p> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[ -<route> +</div></div><p>... your route then looks as follows</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[<route> <!-- poll every 10 seconds --> <from uri="file:///some/path/to/pickup/csvfiles?delete=true&amp;consumer.delay=10000" /> <unmarshal><csv /></unmarshal> <to uri="bean:myCsvHandler?method=doHandleCsvData" /> </route> ]]></script> -</div></div> - - -<h3 id="CSV-Marshalingwithapipeasdelimiter">Marshaling with a pipe as delimiter</h3> - -<p>Using the Spring/XML DSL:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[ -<route> +</div></div><h3 id="CSV-Marshalingwithapipeasdelimiter">Marshaling with a pipe as delimiter</h3><p>Using the Spring/XML DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[<route> <from uri="direct:start" /> <marshal> <csv delimiter="|" /> @@ -200,12 +146,8 @@ public void doHandleCsvData(List<List <to uri="bean:myCsvHandler?method=doHandleCsv" /> </route> ]]></script> -</div></div> - -<p>Or the Java DSL:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -CsvDataFormat csv = new CsvDataFormat(); +</div></div><p>Or the Java DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[CsvDataFormat csv = new CsvDataFormat(); CSVConfig config = new CSVConfig(); config.setDelimiter('|'); csv.setConfig(config); @@ -215,11 +157,8 @@ from("direct:start") .convertBodyTo(String.class) .to("bean:myCsvHandler?method=doHandleCsv"); ]]></script> -</div></div> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -CsvDataFormat csv = new CsvDataFormat(); +</div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[CsvDataFormat csv = new CsvDataFormat(); csv.setDelimiter("|"); from("direct:start") @@ -227,16 +166,8 @@ from("direct:start") .convertBodyTo(String.class) .to("bean:myCsvHandler?method=doHandleCsv"); ]]></script> -</div></div> - -<h3 id="CSV-UsingautogenColumns,configRefandstrategyRefattributesinsideXMLDSL">Using autogenColumns, configRef and strategyRef attributes inside XML DSL</h3> -<p><strong>Available as of Camel 2.9.2 / 2.10</strong></p> - -<p>You can customize the CSV <a shape="rect" href="data-format.html">Data Format</a> to make use of your own <code>CSVConfig</code> and/or <code>CSVStrategy</code>. Also note that the default value of the <code>autogenColumns</code> option is true. The following example should illustrate this customization.</p> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[ -<route> +</div></div><h3 id="CSV-UsingautogenColumns,configRefandstrategyRefattributesinsideXMLDSL">Using autogenColumns, configRef and strategyRef attributes inside XML DSL</h3><p><strong>Available as of Camel 2.9.2 / 2.10</strong></p><p>You can customize the CSV <a shape="rect" href="data-format.html">Data Format</a> to make use of your own <code>CSVConfig</code> and/or <code>CSVStrategy</code>. Also note that the default value of the <code>autogenColumns</code> option is true. The following example should illustrate this customization.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[<route> <from uri="direct:start" /> <marshal> <!-- make use of a strategy other than the default one which is 'org.apache.commons.csv.CSVStrategy.DEFAULT_STRATEGY' --> @@ -263,16 +194,8 @@ from("direct:start") <property name="staticField" value="org.apache.commons.csv.CSVStrategy.EXCEL_STRATEGY" /> </bean> ]]></script> -</div></div> - -<h3 id="CSV-UsingskipFirstLineoptionwhileunmarshaling">Using skipFirstLine option while unmarshaling</h3> -<p><strong>Available as of Camel 2.10</strong></p> - -<p>You can instruct the CSV <a shape="rect" href="data-format.html">Data Format</a> to skip the first line which contains the CSV headers. Using the Spring/XML DSL:</p> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[ -<route> +</div></div><h3 id="CSV-UsingskipFirstLineoptionwhileunmarshaling">Using skipFirstLine option while unmarshaling</h3><p><strong>Available as of Camel 2.10</strong></p><p>You can instruct the CSV <a shape="rect" href="data-format.html">Data Format</a> to skip the first line which contains the CSV headers. Using the Spring/XML DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[<route> <from uri="direct:start" /> <unmarshal> <csv skipFirstLine="true" /> @@ -280,26 +203,16 @@ from("direct:start") <to uri="bean:myCsvHandler?method=doHandleCsv" /> </route> ]]></script> -</div></div> - -<p>Or the Java DSL:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -CsvDataFormat csv = new CsvDataFormat(); +</div></div><p>Or the Java DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[CsvDataFormat csv = new CsvDataFormat(); csv.setSkipFirstLine(true); from("direct:start") .unmarshal(csv) .to("bean:myCsvHandler?method=doHandleCsv"); ]]></script> -</div></div> - -<h3 id="CSV-Unmarshalingwithapipeasdelimiter">Unmarshaling with a pipe as delimiter</h3> - -<p>Using the Spring/XML DSL:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[ -<route> +</div></div><h3 id="CSV-Unmarshalingwithapipeasdelimiter">Unmarshaling with a pipe as delimiter</h3><p>Using the Spring/XML DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[<route> <from uri="direct:start" /> <unmarshal> <csv delimiter="|" /> @@ -307,12 +220,8 @@ from("direct:start") <to uri="bean:myCsvHandler?method=doHandleCsv" /> </route> ]]></script> -</div></div> - -<p>Or the Java DSL:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -CsvDataFormat csv = new CsvDataFormat(); +</div></div><p>Or the Java DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[CsvDataFormat csv = new CsvDataFormat(); CSVStrategy strategy = CSVStrategy.DEFAULT_STRATEGY; strategy.setDelimiter('|'); csv.setStrategy(strategy); @@ -321,22 +230,16 @@ from("direct:start") .unmarshal(csv) .to("bean:myCsvHandler?method=doHandleCsv"); ]]></script> -</div></div> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -CsvDataFormat csv = new CsvDataFormat(); +</div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[CsvDataFormat csv = new CsvDataFormat(); csv.setDelimiter("|"); from("direct:start") .unmarshal(csv) .to("bean:myCsvHandler?method=doHandleCsv"); ]]></script> -</div></div> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -CsvDataFormat csv = new CsvDataFormat(); +</div></div><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[CsvDataFormat csv = new CsvDataFormat(); CSVConfig csvConfig = new CSVConfig(); csvConfig.setDelimiter(";"); csv.setConfig(csvConfig); @@ -345,34 +248,19 @@ from("direct:start") .unmarshal(csv) .to("bean:myCsvHandler?method=doHandleCsv"); ]]></script> -</div></div> - - <div class="aui-message hint shadowed information-macro"> +</div></div> <div class="aui-message hint shadowed information-macro"> <p class="title">Issue in CSVConfig</p> <span class="aui-icon icon-hint">Icon</span> <div class="message-content"> - -<p>It looks like that</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -CSVConfig csvConfig = new CSVConfig(); + <p>It looks like that</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[CSVConfig csvConfig = new CSVConfig(); csvConfig.setDelimiter(';'); ]]></script> -</div></div> -<p>doesn't work. You have to set the delimiter as a String!</p> +</div></div><p>doesn't work. You have to set the delimiter as a String!</p> </div> </div> - - -<h3 id="CSV-Dependencies">Dependencies</h3> - -<p>To use CSV in your Camel routes you need to add a dependency on <strong>camel-csv</strong>, which implements this data format. </p> - -<p>If you use Maven you can just add the following to your pom.xml, substituting the version number for the latest and greatest release (see <a shape="rect" href="download.html">the download page for the latest versions</a>).</p> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -<dependency> +<h3 id="CSV-Dependencies">Dependencies</h3><p>To use CSV in your Camel routes you need to add a dependency on <strong>camel-csv</strong>, which implements this data format.</p><p>If you use Maven you can just add the following to your pom.xml, substituting the version number for the latest and greatest release (see <a shape="rect" href="download.html">the download page for the latest versions</a>).</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-csv</artifactId> <version>x.x.x</version>