Sometimes it is necessary to recreate a database, copying data from another existing database. For instance, recreating development database instance from production data, etc. While most RDBMS provide data import/export tools, they normally require advanced DBA skills to use and are most often not portable across database engines. Cayenne will provide a lightweight ant task to do data porting between the databases with identical schema, using DataMap information.

`cdataport` is an Ant task that takes a Cayenne project (cayenne.xml) with at least one DataMap and two DataNodes and ports data from source DataNode to a destination DataNode. All DataMaps linked to either the source or the target DataNode will be considered for porting.

##### Parameters

Attribute | Description | Required
--- | --- | ---
projectFile | Location of Cayenne project file containing mapping. | Yes
maps | A comma-separated list of DataMap names within the project, whoose entities data needs to be ported. If ommitted, all DataMaps in the project will be ported. | No
srcNode | Source DataNode name. | Yes
destNode | Destination DataNode name. | Yes
cleanDest | If false, will skip deleting data from the destination tables. True is default. | No
includeTables | Comma-separated list of tables to include in the port. If ommitted, all mapped DbEntities will be used. It is possible to use "*" to indicate name patterns. | No
excludeTables | Comma-separated list of tables to exclude from the port. If ommitted, all mapped DbEntities will be used. It is possible to use "*" to indicate name patterns. | No

##### Examples

Here is an example of using `cdataport` to port data using all source DataMaps, excluding DBEntities with name matching "BILL_*":

Load the Ant task (note: if you already loaded all Cayenne tasks via an antlib taskdef described before, this step is not needed):

    <taskdef name="cdataport" classname="org.apache.cayenne.tools.DataPortTask">
         <classpath refid="classpath"/>
    </taskdef>

Invoke the Ant task:

    <cdataport projectFile="subdir/cayenne.xml" srcNode="ProductionNode" destNode="DevNode" excludeTables="BILL_*"/>