2

DdlUtils を使用して MySQL データベースを Derby-DB に移行したいと考えています。そのために、次の ant-script を定義しました。

<?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 heap space for databases with several million tuples で失敗します。を使用してメモリを増やしても

ANT_OPTS=-Xmx29g をエクスポート

残念ながら、これ以上メモリを増やすことはできません。データベースを移行する他の方法はありますか? 個々のタプルがかなり小さいため、なぜ DdlUtils がそれほど多くのメモリを必要とするのかわかりません...

4

0 に答える 0