intra-mart Accel Platform ジョブ インポート・エクスポート仕様書 第3版 2015-04-01

実行方法

この章では、インポート・エクスポートを実行する手段を紹介します。

注意

インポートしたデータをエクスポートする場合、またはエクスポートしたデータをインポートする場合は、「エンコーディング」などの対応するオプションは同じ値を指定する必要があります。

ジョブスケジューラを利用する

ジョブスケジューラの機能を利用してインポート・エクスポートを実行する方法を紹介します。
ジョブスケジューラの詳細については「ジョブスケジューラ仕様書」を参照してください。
intra-mart Accel Platform ではジョブのインポート・エクスポートを行うためのジョブ・ジョブネットを提供しています。
この項では、intra-mart Accel Platform が標準で提供しているジョブのインポート・エクスポートを行うジョブ・ジョブネットの情報を紹介します。

ジョブ

  • ジョブインポート

    ジョブカテゴリ テナントマスタ > インポート
    ジョブID job-import
    ジョブ名 ジョブインポート
  • ジョブエクスポート

    ジョブカテゴリ テナントマスタ > エクスポート
    ジョブID job-scheduler-export
    ジョブ名 ジョブエクスポート

ジョブネット

  • ジョブインポート

    ジョブネットカテゴリ テナントマスタ > インポート
    ジョブネットID job-import-jobnet
    ジョブネット名 ジョブインポート
  • ジョブエクスポート

    ジョブネットカテゴリ テナントマスタ > エクスポート
    ジョブネットID job-export-jobnet
    ジョブネット名 ジョブエクスポート

コラム

ジョブスケジューラ利用時のオプションについて

ジョブスケジューラを利用してインポート・エクスポートを実行する場合は、ジョブ・ジョブネットの実行パラメータにオプションを指定します。

オプションの詳細は、「インポート実行オプション」および「エクスポート実行オプション」を参照してください。

コラム

ジョブスケジューラ利用時のトランザクション管理について

ジョブスケジューラを利用したインポートでは、オプション commit-count を指定しない場合、インポート処理が完了後に一括してコミットを行います。
必要に応じてオプション commit-count の値を変更してご利用ください。

Javaから実行する

JavaのAPIを利用してインポート・エクスポートを実行する方法を紹介します。

インポート

DataImportExecutor#importData(String, InputStream, Map) を利用してインポートを行います。

  • 完全修飾クラス名

    jp.co.intra_mart.foundation.data.importer.DataImportExecutor

第1引数にはインポータIDを指定します。インポータIDは以下を利用します。
  • インポータID

    jp.co.intra_mart.import.StandardJobSchedulerXmlImporter

第2引数にはインポート元を InputStream で指定します。

第3引数にはインポートオプションを Map<String, Object> で指定します。
詳細は、「インポート実行オプション」を参照してください。

DataImportExecutor の詳細については「DataImportExecutorクラスのAPIリスト」を参照してください。

以下はXML形式でインポートを行うサンプルプログラムです。
package sample;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import jp.co.intra_mart.foundation.data.OptionKeyName;
import jp.co.intra_mart.foundation.data.exception.DataImporterException;
import jp.co.intra_mart.foundation.data.importer.DataImportExecutor;
import jp.co.intra_mart.foundation.service.client.file.PublicStorage;

/**
 * ジョブのインポートを行うクラスです。
 */
public class JobImporter {

    private static final String IMPORTER_ID = "jp.co.intra_mart.import.StandardJobSchedulerXmlImporter";

    /**
     * ジョブのインポートを行います。
     * @throws DataImporterException インポートで何らかの例外が発生した場合。
     */
    public void doImport() throws DataImporterException {
        final DataImportExecutor executor = new DataImportExecutor();
        final Map<String, Object> options = new HashMap<String, Object>();
        options.put(OptionKeyName.ENCODING.value(), "UTF-8");
        options.put(OptionKeyName.VALIDATE_XML.value(), true);
        options.put(OptionKeyName.COMMIT_COUNT.value(), 100);
        // パブリックストレージ直下のaccount.xmlを選択
        final PublicStorage storage = new PublicStorage("job-scheduler.xml");
        try {
            // PublicStorageからInputStreamを取得
            final InputStream stream = storage.open();
            try {
                executor.importData(IMPORTER_ID, stream, options);
            } finally {
                stream.close();
            }
        } catch (final IOException e) {
            throw new DataImporterException(e);
        }
    }

}

注意

第2引数の InputStream を指定した場合は、オプション file は利用できません。
オプション file を利用したい場合は、第2引数に null を指定してください。

エクスポート

DataExportExecutor#exportData(String, OutputStream, Map) を利用してエクスポートを行います。
  • 完全修飾クラス名

    jp.co.intra_mart.foundation.data.exporter.DataExportExecutor
第1引数にはエクスポータIDを指定します。エクスポータIDは以下を利用します。
  • エクスポータID

    jp.co.intra_mart.export.StandardJobSchedulerXmlExporter
第2引数にはエクスポート先を OutputStream で指定します。

第3引数にはエクスポートオプションを Map<String, Object> で指定します。
詳細は、「エクスポート実行オプション」を参照してください。

DataExportExecutor の詳細については「DataExportExecutorクラスのAPIリスト」を参照してください。

以下はXML形式でエクスポートを行うサンプルプログラムです。
package sample;

import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;

import jp.co.intra_mart.foundation.data.OptionKeyName;
import jp.co.intra_mart.foundation.data.exception.DataExporterException;
import jp.co.intra_mart.foundation.data.exporter.DataExportExecutor;
import jp.co.intra_mart.foundation.service.client.file.PublicStorage;

/**
 * ジョブのエクスポートを行うクラスです。
 */
public class JobExporter {

    private static final String EXPORTER_ID = "jp.co.intra_mart.export.StandardJobSchedulerXmlExporter";

    /**
     * ジョブのエクスポートを行います。
     * @throws DataExporterException エクスポートで何らかの例外が発生した場合。
     */
    public void doExport() throws DataExporterException {
        final DataExportExecutor executor = new DataExportExecutor();
        final Map<String, Object> options = new HashMap<String, Object>();
        options.put(OptionKeyName.ENCODING.value(), "UTF-8");
        options.put(OptionKeyName.FORMAT_XML.value(), false);
        options.put(OptionKeyName.FETCH_COUNT.value(), 10);
        // パブリックストレージ直下のaccount.xmlを選択
        final PublicStorage storage = new PublicStorage("job-scheduler.xml");
        try {
            // PublicStorageからOutputStreamを取得
            final OutputStream stream = storage.create();
            try {
                executor.exportData(EXPORTER_ID, stream, options);
            } finally {
                stream.close();
            }
        } catch (final IOException e) {
            throw new DataExporterException(e);
        }
    }

}

注意

第2引数の OutputStream を指定した場合は、オプション file は利用できません。
オプション file を利用したい場合は、第2引数に null を指定してください。

スクリプト開発モデルプログラムから実行する

スクリプト開発モデルのAPIを利用してインポート・エクスポートを実行する方法を紹介します。

インポート

DataImportExecutor#importData(String, ByteReader, Object) を利用してインポートを行います。

第1引数にはインポータIDを指定します。インポータIDは以下を利用します。
  • インポータID

    jp.co.intra_mart.import.StandardJobSchedulerXmlImporter
第2引数にはインポート元を ByteReader で指定します。

第3引数にはインポートオプションをObject形式で指定します。
詳細は、「インポート実行オプション」を参照してください。

DataImportExecutor の詳細については「DataImportExecutorオブジェクトのAPIリスト」を参照してください。

以下はXML形式でインポートを行うサンプルプログラムです。
var IMPORTER_ID = 'jp.co.intra_mart.import.StandardJobSchedulerXmlImporter';

/**
 * ジョブのインポートを行います。
 */
function doImport() {
    var executor = new DataImportExecutor();
    var options = {
        'encoding': 'UTF-8',
        'validate-xml': true,
        'commit-count': 100
    };
    // パブリックストレージ直下の「job-scheduler.xml」を選択
    var storage = new PublicStorage('job-scheduler.xml');
    // ファイルからデータをインポート
    storage.openAsBinary(function(reader, error) {
        if (error) {
            // ファイルの読み込みに失敗 -> 例外処理
            Logger.getLogger().error(error.message);
            return;
        }
        result = executor.importData(IMPORTER_ID, reader, options);
        if (result.error) {
            // インポート失敗 -> 例外処理
            Logger.getLogger().error(result.errorMessage);
        }
    });
}

注意

第2引数の ByteReader を指定した場合は、オプション file は利用できません。
オプション file を利用したい場合は、第2引数に null を指定してください。

エクスポート

DataExportExecutor#exportData(String, ByteWriter, Object) を利用してエクスポートを行います。

第1引数にはエクスポータIDを指定します。エクスポータIDは以下を利用します。
  • エクスポータID

    jp.co.intra_mart.export.StandardJobSchedulerXmlExporter
第2引数にはエクスポート元を ByteWriter で指定します。

第3引数にはエクスポートオプションをObject形式で指定します。
詳細は、「エクスポート実行オプション」を参照してください。

DataExportExecutor の詳細については「DataExportExecutorオブジェクトのAPIリスト」を参照してください。

以下はXML形式でインポートを行うサンプルプログラムです。
var EXPORTER_ID = 'jp.co.intra_mart.export.StandardJobSchedulerXmlExporter';

/**
 * ジョブのエクスポートを行います。
 */
function doExport() {
    var executor = new DataExportExecutor();
    var options = {
        'encoding': 'UTF-8',
        'format-xml': false,
        'fetch-count': 10
    };
    // パブリックストレージ直下の「job-scheduler.xml」を選択
    var storage = new PublicStorage('job-scheduler.xml');
    // ファイルにデータをエクスポート
    storage.createAsBinary(function(writer, error) {
        if(error) {
            // ファイルの作成に失敗 -> 例外処理
            Logger.getLogger().error(error.message);
            return;
        }
        var result = executor.exportData(EXPORTER_ID, writer, options);
        if (result.error) {
            // エクスポートに失敗 -> 例外処理
            Logger.getLogger().error(result.errorMessage);
        }
    });
}

注意

第2引数の ByteWriter を指定した場合は、オプション file は利用できません。
オプション file を利用したい場合は、第2引数に null を指定してください。