Перенос большой базы данных MySQL в дерби с помощью DdlUtils
Я хочу перенести базу данных MySQL в Derby-DB, используя DdlUtils. Для этого я определил следующий 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 для баз данных с несколькими миллионами кортежей. Даже когда я увеличиваю память, используя
экспорт ANT_OPTS=-Xmx29g
К сожалению, я не могу в дальнейшем увеличить память. Есть ли другой способ перенести базу данных? Я не уверен, почему DdlUtils требует столько памяти, так как отдельные кортежи довольно малы...