我想使用DdlUtils将MySQL数据库迁移到Derby-DB。为此,我定义了以下ant脚本:
<?xml version="1.0"?>
<project name="MigrateToDerby" basedir=".">
<path id="classpath">
<fileset dir="./lib">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="export-source-db" description="Dumps db structure and data">
<taskdef name="databaseToDdl" classname="org.apache.ddlutils.task.DatabaseToDdlTask">
<classpath refid="classpath"/>
</taskdef>
<databaseToDdl modelName="MigrateTest">
<database url="jdbc:mysql://localhost/database" driverClassName="com.mysql.jdbc.Driver" username="a" password="b"/>
<writeSchemaToFile outputFile="db-schema.xml"/>
<writeDataToFile outputFile="data.xml"/>
</databaseToDdl>
</target>
</project>
该脚本适用于较小的数据库,但失败时带有java.lang.OutOfMemoryError:具有数百万元组的数据库的Java堆空间。即使我使用
增加内存不幸的是,我无法进一步增加记忆力。有没有其他方法来迁移数据库?我不确定,为什么DdlUtils需要如此多的内存,因为单个元组相当小......导出ANT_OPTS = -Xmx29g