Batch Tool は、PolarDB-X チームが開発した Java ベースの CLI ユーティリティであり、PolarDB-X データベースに対するバルクデータ操作を実行するために設計されています。プロデューサー/コンシューマー方式に基づいて構築されており、ファイルからのデータインポート、ファイルへのデータエクスポート、および MySQL、PolarDB-X 1.0、PolarDB-X 2.0 の各データソース間でのデータ移行をサポートします。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
ご利用のマシンに Java がインストールされていること
対象となる PolarDB-X データベースへネットワーク接続できること
Batch Tool のダウンロード
以下のリンクから JAR パッケージをダウンロードしてください。
利用可能なすべてのオプションを表示するには、次のコマンドを実行します。
java -jar batch-tool.jar --helpパラメーター
このドキュメント内のすべての例では、デフォルトで UTF-8 エンコーディングとカンマ (,) をフィールド区切り文字として使用します。
下記の表に、すべてのパラメーターを一覧表示します。必須パラメーターは操作タイプによって異なります。コマンドの構文については、「例」セクションをご参照ください。
| パラメーター | 長形式 | 説明 | デフォルト |
|---|---|---|---|
-o | --operation | 操作タイプ:export、import、delete、または update | — |
-h | --host | データベースのホスト IP アドレス | — |
-P | --port | データベースのポート番号 | — |
-u | --user | ユーザー名 | — |
-p | --password | パスワード | — |
-D | --database | データベース名 | — |
-t | --table | 対象テーブル名 | — |
-s | --sep | フィールド区切り文字(デリミタ) | — |
-f | --file | インポート元ファイルのパス(セミコロン区切り) | — |
-dir | --directory | インポート対象ファイルを格納するディレクトリ | — |
-F | --filenum | 出力ファイル数(固定) | — |
-L | --line | 出力ファイルごとの最大行数 | — |
-w | --where | 行をフィルターするための WHERE 条件(例: col1>99 AND col2<100) | — |
-col | --columns | エクスポート対象のカラム(セミコロン区切り) | — |
-format | --fileFormat | ファイルフォーマット:NONE、TXT、CSV、XLS、または XLSX | NONE |
-comp | --compress | 圧縮方式:NONE または GZIP | NONE |
-encrypt | --encrypt | 暗号化方式:NONE、AES、または SM4 | NONE |
-key | --secretKey | 暗号化に使用するシークレットキー | — |
-DDL | --DDL | DDL モード:NONE、ONLY、または WITH | NONE |
-cs | --charset | ファイルの文字セット | — |
-header | --header | 先頭行をカラム名として処理する | false |
-quote | --quoteMode | フィールド値の引用符モード:AUTO、FORCE、または NONE | AUTO |
-lastSep | --withLastSep | 各行の末尾に区切り文字を付与するかどうか | false |
-sharding | --sharding | シャーディングモードを有効化する | 操作タイプに応じて変動 |
-batchsize | --batchSize | INSERT 操作におけるバッチサイズ | — |
-pro | --producer | プロデューサー スレッド数 | — |
-con | --consumer | コンシューマー スレッド数 | — |
-fcon | --forceConsumer | コンシューマーの並列実行を強制する | — |
-tps | --tpsLimit | 1 秒あたりのトランザクション数(TPS)制限(-1 の場合、制限なし) | -1 |
-readsize | --readSize | 読み取りブロックサイズ(MB) | — |
-ringsize | --ringSize | リングバッファーのサイズ(2 のべき乗である必要があります) | — |
-maxConn | --maxConnection | 最大接続数(Druid プール) | — |
-minConn | --minConnection | 最小接続数(Druid プール) | — |
-maxWait | --connMaxWait | 接続取得時の最大待機時間(ミリ秒) | — |
-initSqls | --initSqls | 接続初期化用 SQL ステートメント(Druid) | — |
-param | --connParam | JDBC 接続パラメーター(key1=val1&key2=val2 形式) | — |
-lb | --loadbalance | JDBC ロードバランスを有効化する。-h で複数のホストを host1:port1,host2:port2 | false |
-O | --orderby | エクスポート時の並べ替え順序:asc または desc | — |
-OC | --orderCol | 並べ替え対象のカラム名(セミコロン区切り) | — |
-para | --paraMerge | ORDER BY を使用したエクスポート時に並列マージを使用する | false |
-local | --localMerge | ローカルマージソートを使用する | false |
-mask | --mask | エクスポート時に機密カラムをマスキングするための JSON 構成 | — |
-in | --whereIn | WHERE col IN (values) 構文を使用する | false |
-func | --sqlFunc | UPDATE 操作で SQL 関数を使用する | false |
-noEsc | --noEscape | SQL の値エスケープを無効化する | false |
-i | --ignore | INSERT-IGNORE モードを有効化し、ブレークポイントから再開可能にする | false |
-error | --maxError | プログラム終了前の最大エラー数 | — |
-H | --historyFile | ブレークポイント再開用の履歴ファイルパス | — |
-pre | --prefix | エクスポートファイル名のプレフィックス | — |
-rfonly | --readFileOnly | SQL を実行せずにファイルを読み取り・処理する | false |
-perf | --perfMode | パフォーマンスモードを有効化する(互換性が低下) | false |
-config | --configFile | YAML 構成ファイルのパス | — |
-help | --help | ヘルプメッセージ | — |
-v | --version | Batch Tool のバージョンを表示して終了する | — |
例
以下の例では、UTF-8 エンコーディングとカンマ (,) をフィールド区切り文字として使用します。プレースホルダーの値は、実際の接続情報をもとに置き換えてください。
データのエクスポート
以下の例では、シャーディングモードで customer テーブルから tpch データベースのデータをエクスポートします。
デフォルト設定でエクスポートする
出力ファイル数は、テーブルのシャード数と等しくなります。
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -col "c_custkey;c_name;c_nationkey"固定数のファイルに出力する
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -F 3-F 3 により、出力を正確に 3 つのファイルに分割します。
ファイルごとの行数を制限する
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -L 100000-L 100000 により、各ファイルの最大行数を 100,000 行に設定します。各ファイルには 200 行~100,000 行が含まれる可能性があります。
WHERE 条件で行をフィルターする
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -w "c_nationkey=10"-w "c_nationkey=10" により、c_nationkey が 10 に等しい行のみをエクスポートします。
フィールド値を強制的に引用符で囲む
フィールド値に区切り文字が含まれる場合は、-quote force を使用して、すべての値を二重引用符で囲みます。
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -quote force指定カラムのみをエクスポートする
-col を使用して、指定したカラムのみをエクスポートします。
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -col "c_custkey;c_name;c_nationkey"-col "c_custkey;c_name;c_nationkey" により、これらの 3 つのカラムのみをセミコロン区切りでエクスポートします。
GZIP 圧縮でエクスポートする
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -comp GZIP-comp GZIP により、各出力ファイルが圧縮されます。大規模なテーブルをエクスポートする際にディスク使用率を削減する場合に使用します。
DDL を含めてエクスポートする
-DDL WITH を使用すると、データとともに CREATE TABLE ステートメントも出力されます。
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -DDL WITHDDL のみ(データなし)をエクスポートする場合は、-DDL ONLY を使用します。
ORDER BY を使用してエクスポートする
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o export -t customer -s , -O asc -OC "c_custkey"-O ascにより、並べ替え方向を昇順に設定します。-OC "c_custkey"により、並べ替え対象のカラムを指定します。
大規模なテーブルの場合、エクスポート速度を向上させるために、-para true を追加して並列マージソートを使用できます。
データのインポート
以下の例では、シャーディングモードで lineitem テーブルにデータをインポートします。このテーブルは tpch データベースにあります。
インポートを実行する前に、対象テーブルを作成してください。テーブル構造は、ソースファイルの構造と一致している必要があります。
単一ファイルをインポートする
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o import -t lineitem -s , -f "./data/lineitem.csv" -i true -H "./lineitem_history.txt"-f "./data/lineitem.csv" により、ソース CSV ファイルのパスを指定します。
ディレクトリ内のすべてのファイルをインポートする
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o import -t lineitem -s , -dir "./data/lineitem/"-dir "./data/lineitem/" により、指定されたディレクトリ内のすべてのファイルをインポートします。各ファイル名は対象テーブル名で始める必要があります(例: lineitem0_1)。
ブレークポイントから再開してインポートする
インポートが中断された場合、-i true および -H を使用して、中断地点から再開できます。
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o import -t lineitem -s , -f "./data/lineitem.csv" -i true -H "./lineitem_history.txt"-i trueにより、INSERT-IGNORE モードおよびブレークポイント再開が有効化されます。-H "./lineitem_history.txt"により、進行状況を追跡する履歴ファイルを指定します。
インポートスループットをチューニングする
大規模なインポートでは、同時実行数およびバッチサイズを調整することでパフォーマンスを向上させられます。
java -jar batch-tool.jar -P 3306 -h 127.0.XX.XX -u user_**** -p 12**** -D tpch -o import -t lineitem -s , -dir "./data/lineitem/" -pro 4 -con 8 -batchsize 500-pro 4により、ファイルからデータを読み取るプロデューサー スレッド数を 4 に設定します。-con 8により、データベースへデータを書き込むコンシューマー スレッド数を 8 に設定します。-batchsize 500により、1 バッチあたりの挿入行数を 500 行に設定します。
これらの値から開始し、データベースの容量および実測されたスループットに基づいて調整してください。