すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for SelectDB:DataX を使用したデータインポート

最終更新日:Mar 28, 2026

DataX は、Alibaba Group が提供するオープンソースのオフラインデータ同期ツールです。MySQL や Oracle などのリレーショナルデータベース、Hadoop 分散ファイルシステム (HDFS)、Hive、MaxCompute、HBase、FTP などからデータを読み取ることができます。ApsaraDB for SelectDB へデータを書き込むには、DataX Doris Writer を使用します。

データフロー:

ソース(例:MySQL) → mysqlreader → DataX チャンネル → doriswriter → ApsaraDB for SelectDB

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

  • Maven がインストール済みであること

  • Python 3.6 以降がインストール済みであること

  • ApsaraDB for SelectDB インスタンス

MySQL から ApsaraDB for SelectDB へのデータインポート

以下の例では、Linux 環境で MySQL をソースとして使用し、完全なデータインポート手順を説明します。

ステップ 1:DataX 環境の構築

  1. GitHub 上の Doris 拡張から DataX パッケージをダウンロードします。

  2. 初期化スクリプトを実行します。

    sh init-env.sh
  3. DataX プロジェクトをコンパイルします。

    必要に応じて hdfsreaderhdfswriterossreader、または osswriter プラグインを使用する場合は、追加の JAR パッケージが必要です。これらのプラグインをスキップする場合は、コンパイル前に DataX/pom.xml から対応するモジュールを削除してください。
    cd DataX/
    mvn package assembly:assembly -Dmaven.test.skip=true

    コンパイル後の出力は、target/datax/datax/ ディレクトリに保存されます。

  4. mysqlreader および doriswriter プラグインを個別にコンパイルします。

    mvn clean install -pl plugin-rdbms-util,mysqlreader,doriswriter -DskipTests

ステップ 2:MySQL におけるテストデータの準備

  1. MySQL でテストテーブルを作成します。

    CREATE TABLE `employees` (
      `emp_no`     int          NOT NULL,
      `birth_date` date         NOT NULL,
      `first_name` varchar(14)  NOT NULL,
      `last_name`  varchar(16)  NOT NULL,
      `gender`     enum('M','F') NOT NULL,
      `hire_date`  date         NOT NULL,
      PRIMARY KEY (`emp_no`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
  2. Data Management (DMS) を使用してテストデータを生成します。

ステップ 3:ApsaraDB for SelectDB における送信先テーブルの作成

  1. MySQL プロトコル経由で ApsaraDB for SelectDB のインスタンスに接続します。詳細については、「インスタンスへの接続」をご参照ください。

  2. データベースおよび送信先テーブルを作成します。

    CREATE DATABASE test_db;
    
    USE test_db;
    CREATE TABLE employees (
        emp_no     int NOT NULL,
        birth_date date,
        first_name varchar(20),
        last_name  varchar(20),
        gender     char(2),
        hire_date  date
    )
    UNIQUE KEY(`emp_no`)
    DISTRIBUTED BY HASH(`emp_no`) BUCKETS 1;

ステップ 4:DataX インポートジョブの実行

  1. ApsaraDB for SelectDB のインスタンスに対してパブリックエンドポイントを申請します。詳細については、「パブリックエンドポイントの申請またはリリース」をご参照ください。

  2. DataX ホストのパブリック IP アドレスを、インスタンスの IP アドレスホワイトリストに追加します。詳細については、「IP アドレスホワイトリストの設定」をご参照ください。

  3. ジョブ構成ファイル mysqlToSelectDB.json を作成します。

    {
      "job": {
        "content": [
          {
            "reader": {
              "name": "mysqlreader",
              "parameter": {
                "column": [
                  "emp_no", "birth_date", "first_name",
                  "last_name", "gender", "hire_date"
                ],
                "where": "emp_no>0",
                "connection": [
                  {
                    "jdbcUrl": [
                      "jdbc:mysql://host:port/test_db?useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8"
                    ],
                    "table": ["employees"]
                  }
                ],
                "password": "123456",
                "splitPk": "emp_no",
                "username": "admin"
              }
            },
            "writer": {
              "name": "doriswriter",
              "parameter": {
                "loadUrl": [
                  "selectdb-cn-xxx-public.selectdbfe.rds.aliyuncs.com:8080"
                ],
                "loadProps": {
                  "format": "json",
                  "strip_outer_array": "true"
                },
                "column": [
                  "emp_no", "birth_date", "first_name",
                  "last_name", "gender", "hire_date"
                ],
                "username": "admin",
                "password": "123456",
                "postSql": [],
                "preSql": [],
                "connection": [
                  {
                    "jdbcUrl": "jdbc:mysql://selectdb-cn-xxx-public.selectdbfe.rds.aliyuncs.com:9030/test_db",
                    "table": ["employees"],
                    "selectedDatabase": "test_db"
                  }
                ],
                "maxBatchRows": 1000000,
                "batchSize": 536870912000
              }
            }
          }
        ],
        "setting": {
          "errorLimit": {
            "percentage": 0.02,
            "record": 0
          },
          "speed": {
            "channel": 5
          }
        }
      }
    }
  4. ジョブを実行します。

    cd target/datax/datax/bin
    python datax.py ../mysqlToSelectDB.json

パラメーター

以下の表では、doriswriter のパラメーターについて説明します。jdbcUrl および loadUrl パラメーターには、ApsaraDB for SelectDB インスタンスの VPC エンドポイントまたはパブリックエンドポイントを指定できます。DataX ホストとインスタンスが同一 VPC 内にある場合は、VPC エンドポイントを使用してください。それ以外の場合は、パブリックエンドポイントを使用します。

エンドポイントを確認するには、ApsaraDB for SelectDB コンソールにログインし、[インスタンス詳細] ページに移動して、[基本情報] タブの [ネットワーク情報] セクションを確認します。

パラメーター必須デフォルト値説明
jdbcUrlはいインスタンスの Java Database Connectivity (JDBC) URL。形式: jdbc:mysql://<エンドポイント>:<MySQL ポート>/<データベース>。例:jdbc:mysql://selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:9030/test_db
loadUrlはいStream Load の HTTP エンドポイント。形式:<エンドポイント>:<HTTP ポート>。例:selectdb-cn-4xl3jv1****.selectdbfe.rds.aliyuncs.com:8080
usernameはいインスタンスのユーザー名。
passwordはいユーザー名に対応するパスワード。
connection.selectedDatabaseはいターゲットデータベース名。
connection.tableはいターゲットテーブル名。
columnはいデータを書き込む列。複数の列をカンマで区切ります。例:["id", "name", "age"]
preSqlいいえデータ書き込み前に実行する SQL ステートメント。
postSqlいいえデータ書き込み後に実行する SQL ステートメント。
maxBatchRowsいいえ500000バッチあたりの最大行数。maxBatchRows または batchSize のいずれかが最初に達すると、バッチがフラッシュされます。
batchSizeいいえ104857600(100 MB)バッチあたりの最大データサイズ。batchSize または maxBatchRows のいずれかが最初に達すると、バッチがフラッシュされます。
maxRetriesいいえ3バッチインポート失敗時の最大再試行回数。
labelPrefixいいえdatax_doris_writer_インポートラベルのプレフィックス。各バッチでは、このプレフィックスと UUID を組み合わせた一意のラベルが使用され、重複インポートを防止します。
loadPropsいいえその他の Stream Load パラメーター。サポートされるパラメーターの完全な一覧については、「パラメーター」セクション(「Stream Load を使用したデータインポート」)をご参照ください。
flushIntervalいいえ30000 msバッチ書き込み間隔。

データ形式の設定

デフォルトでは、DataX Doris Writer はデータを CSV 形式に変換し、列区切り文字として \t、行区切り文字として \n を使用します。

カスタム区切り文字の使用

区切り文字を変更するには、loadProps で設定します。\x01\x02 のような非表示文字を使用することで、タブや改行を含むデータとの競合を回避できます。

"loadProps": {
    "format": "csv",
    "column_separator": "\\x01",
    "line_delimiter": "\\x02"
}

JSON 形式の使用

代わりに JSON 形式でデータをインポートするには、以下のように設定します。

"loadProps": {
    "format": "json",
    "strip_outer_array": true
}

次のステップ