<?xml version="1.0" encoding="UTF-8"?>
<document>
	<properties>
		<title>S2JDBC-Gen - Load-Data</title>
	</properties>
	<body>
		<section name="Load-Data">
			<ul>
				<li>
					<p>
						<a href="#説明">説明</a>
						<ul>
							<li>
								<p>
									<a href="#概要">概要</a>
								</p>
							</li>
						</ul>
					</p>
				</li>
				<li>
					<p>
						<a href="#パラメータ">パラメータ</a>
						<ul>
							<li>
								<p>
									<a href="#トップレベルのパラメータ">トップレベルのパラメータ</a>
								</p>
							</li>
							<li>
								<p>
									<a href="#ネストした要素として指定されるパラメータ">ネストした要素として指定されるパラメータ</a>
								</p>
							</li>
						</ul>
					</p>
				</li>
				<li>
					<p>
						<a href="#例">例</a>
						<ul>
							<li>
								<p>
									<a href="#バッチサイズを変更する">バッチサイズを変更する</a>
								</p>
							</li>
							<li>
								<p>
									<a href="#ロード前に既存データを削除する">ロード前に既存データを削除する</a>
								</p>
							</li>
							<li>
								<p>
									<a href="#環境名つきバージョンディレクトリ以下のダンプァイルを優先する">環境名つきバージョンディレクトリ以下のダンプァイルを優先する</a>
								</p>
							</li>
						</ul>
					</p>
				</li>
			</ul>
		</section>
		<section name="説明">
			<subsection name="概要">
				<p>
					ダンプファイルをデータベースにロードします。
				</p>
				<p>
					ロードできるダンプファイルの形式については、<a href="../file_format.html#ダンプファイル">ダンプファイル</a>を参照ください。
				</p>
				<p>
					このタスクは、外部キー制約の存在を考慮したロードを行いません。
					外部キー制約を解除した状態でロードを行いたい場合は<a href="migrate.html">Migrate</a>タスクを使用することを検討してください。
				</p>
			</subsection>
		</section>
		<section name="パラメータ">
			<p>
				Antタスクへのパラメータを以下に示します。
			</p>
			<subsection name="トップレベルのパラメータ">
				<table border="1" cellpadding="2" cellspacing="0">
					<tr><th>属性</th><th>説明</th><th>デフォルト値</th><th>必須</th></tr>
					<tr><td>classpathDir</td><td>エンティティクラスを含むクラスパスのディレクトリです。このディレクトリはタスクの実行時のクラスパスに含まれている必要があります。</td><td>-</td><td>YES</td></tr>
					<tr><td>rootPackageName</td><td>ルートパッケージ名です。</td><td>""</td><td>NO</td></tr>
					<tr><td>entityPackageName</td><td>エンティティクラスのパッケージ名です。エンティティクラスは、rootPackageNameとこの値をピリオドで連結したパッケージに配置されているとみなされます。</td><td>"entity"</td><td>NO</td></tr>
					<tr><td>entityClassNamePattern</td><td>このタスクで対象とするエンティティクラス名の正規表現です。</td><td>".*"</td><td>NO</td></tr>
					<tr><td>ignoreEntityClassNamePattern</td><td>このタスクで対象としないエンティティクラス名の正規表現です。</td><td>""</td><td>NO</td></tr>
					<tr><td>migrateDir</td><td>マイグレーション用のファイルを管理するディレクトリです。</td><td>"db/migrate"</td><td>NO</td></tr>
					<tr><td>ddlInfoFile</td><td>DDLのバージョン番号を管理するファイルです。</td><td>"db/ddl-info.txt"</td><td>NO</td></tr>
					<tr><td>versionNoPattern</td><td>バージョン番号のパターンです。バージョン番号に対応するディレクトリ名に使用されます。</td><td>"0000"</td><td>NO</td></tr>
					<tr><td>dumpDirName</td><td>ダンプファイルを出力するディレクトリ名です。</td><td>"040-dump"</td><td>NO</td></tr>
					<tr><td>dumpDir</td><td>ダンプファイルが格納されているディレクトリです。指定しない場合、migrateDir、ddlInfoFile、versionNoPattern、dumpDirNameにより出力先ディレクトリが決まります。</td><td>-</td><td>NO</td></tr>
					<tr><td>dumpFileEncoding</td><td>ダンプファイルのエンコーディングです。</td><td>"UTF-8"</td><td>NO</td></tr>
					<tr><td>loadBatchSize</td><td>ダンプファイルのデータをロードする際のバッチサイズです。</td><td>"10"</td><td>NO</td></tr>
					<tr><td>delete</td><td>"true"の場合、ロードの前にデータを削除します。"false"の場合、何もしません。</td><td>"false"</td><td>NO</td></tr>
					<tr><td>transactional</td><td>"true"の場合、単一のトランザクションとして実行します。</td><td>"false"</td><td>NO</td></tr>
					<tr><td>genDialectClassName</td><td>S2JDBC-Genのダイアレクトインタフェースの実装クラス名です。ここに指定するクラスはorg.seasar.extension.jdbc.gen.dialect.GenDialectインタフェースを実装している必要があります。指定しない場合は<a href="../s2jdbc_setup.html#ダイアレクト">S2JDBCのダイアレクト</a>に対応したデフォルトのクラスが使用されます。</td><td>-</td><td>NO</td></tr>
					<tr><td>configPath</td><td>JdbcManagerのコンポーネント定義を含む設定ファイルです。このタスクの実行に使用されます。</td><td>"s2jdbc.dicon"</td><td>NO</td></tr>
					<tr><td>env</td><td>環境名です。</td><td>"ut"</td><td>NO</td></tr>
					<tr><td>applyEnvToVersion</td><td>バージョンディレクトリに環境名を適用する場合"true"を指定しますを指定します。trueを指定すると、通常のバージョンディレクトリよりも環境名つきバージョンディレクトリに存在するダンプファイルを優先してロードします。dumpDirを指定しない場合にのみ有効です。</td><td>"false"</td><td>NO</td></tr>
					<tr><td>jdbcManagerName</td><td>JdbcManagerのコンポーネント名です。接続先のデータベースはJdbcManagerのコンポーネント名によって決まります。</td><td>"jdbcManager"</td><td>NO</td></tr>
					<tr><td>factoryClassName</td><td>S2JDBC-Genの公開されたインタフェースの実装を作成するファクトリのクラス名です。S2JDBC-Genをカスタマイズする場合に独自のファクトリクラスを指定できます。ここに指定するクラスはorg.seasar.extension.jdbc.gen.internal.factory.Factoryインタフェースを実装している必要があります。</td><td>"org.seasar.extension.jdbc.gen<br />.internal.factory.FactoryImpl"</td><td>NO</td></tr>
					<tr><td>commandInvokerClassName</td><td>S2JDBC-Genのコマンドを呼び出すクラスの名前です。コマンドの呼び出し前後で任意の処理を実行したい場合に指定します。ここに指定するクラスはorg.seasar.extension.jdbc.gen.command.CommandInvokerインタフェースを実装している必要があります。</td><td>"org.seasar.extension.jdbc.gen<br />.internal.command.CommandInvokerImpl"</td><td>NO</td></tr>
					<tr><td>classpath</td><td>このタスクを実行する際のクラスパスです。</td><td>-</td><td>classpathrefが指定されていない場合YES</td></tr>
					<tr><td>classpathref</td><td>このタスクを実行する際のクラスパスの参照です。</td><td>-</td><td>classpathが指定されていない場合YES</td></tr>
				</table>
			</subsection>
			<subsection name="ネストした要素として指定されるパラメータ">
				<h4>
					jvmArg
				</h4>
				<p>
					このタスクの大部分の処理は別VMで行われます。VMに引数を渡す場合は&lt;jvmarg&gt;要素を使用します。
					これはAntのJavaタスクで使用できる&lt;jvmarg&gt;と同じです。
					使用可能な属性やネストした要素についてはAntのドキュメントを参照してください。
				</p>
			</subsection>
		</section>
		<section name="例">
			<subsection name="バッチサイズを変更する">
				<p>
					バッチサイズを変更してタスクを実行します。
				</p>
<source><![CDATA[<load-data
    classpathDir="build/classes"
    rootPackageName="examples"
    loadBatchSize="20"
    classpathRef="classpath"
/>]]></source>
			</subsection>
			<subsection name="ロード前に既存データを削除する">
				<p>
					ロード前に既存データを削除するには、delete属性に"true"を指定します。
				</p>
<source><![CDATA[<load-data
    classpathDir="build/classes"
    rootPackageName="examples"
    delete="true"
    classpathRef="classpath"
/>]]></source>
				<p>
					delete属性に"true"を指定すると、全データを削除する「delete from ...」のSQLがロード前に実行されるようになります。
				</p>
			</subsection>
			<subsection name="環境名つきバージョンディレクトリ以下のダンプァイルを優先する">
				<p>
					applyEnvToVersion属性に"true"を指定すると、環境名つきバージョンディレクトリ以下に同名の相対パスで表されるファイルがあれば、そちらが優先されるようになります。
					設定例は次の通りです。
				</p>
<source><![CDATA[<load-data
    classpathDir="build/classes"
    rootPackageName="examples"
    applyEnvToVersion="true"
    env="ut"
    classpathRef="classpath"
/>]]></source>
				<p>
					環境名つきバージョンディレクトリとは、バージョン名と環境名を#で連結したディレクトリのことです。
					次の図で言えば、0001#utがバージョンディレクトリになります。
				</p>
<source><![CDATA[db
└─migrate
    ├─0001
    │  └─create
    │      └─040-dump
    │          ├─employee.csv
    │          └─address.csv
    │          └─..
    └─0001#ut
        └─create
            └─040-dump
                └─employee.csv]]></source>
				<p>
					この例では、employee.csvについては0001#utディレクトリ以下のものが使用され、
					0001ディレクトリ以下にあるemployee.csvは参照されません。
					address.csvについては0001ディレクトリ以下にあるものが使用されます。
				</p>
				<p>
					環境名つきバージョンディレクトリ以下のダンプデータは、<a href="dump_data.html">Dump-Dataタスク</a>により作成できます。
				</p>
			</subsection>
		</section>
	</body>
</document>
