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

PolarDB:OSS エンジンへのローカルテーブルのシリアルエクスポート

最終更新日:May 08, 2026

PolarDB が提供する OSSOUTFILE 機能を使用して、データベーステーブルを CSV ファイルとしてエクスポートし、OSS エンジンに保存できます。

前提条件

ご利用の PolarDB クラスターは、次のいずれかの条件を満たしている必要があります。

  • カーネルバージョンMySQL 8.0.1 で、リビジョンバージョンが 8.0.1.1.30 以降であること。

  • カーネルバージョンMySQL 8.0.2 で、パッチバージョンが 8.0.2.2.8 以降であること。

クラスターバージョンを確認するには、「バージョン番号の照会」をご参照ください。

注意事項

  • PolarDB に接続した DMS を通じてデータファイルを OSS エンジンにエクスポートすることはサポートされていません。この場合、次のエラーメッセージが表示されます。

    Can not issue executeUpdate() or executeLargeUpdate() for SELECTs

    Clientまたはコマンドラインを使用して PolarDB に接続し、その後エクスポートを実行してください。詳細については、「データベースクラスターへの接続」をご参照ください。

  • OSS への増分バックアップを行うには、バックアップスケジュールを作成し、バックアップスケジュールを設定して、OSS への増分バックアップを有効にしてください。

  • 読み取り専用ノードでエクスポートタスクを実行してください。SQL ステートメントに HINT 構文 /*FORCE_SLAVE*/ を追加するか、読み取り専用ノードに直接接続してエクスポートを実行します。

パラメーターの説明

パラメーター

説明

loose_oss_outfile_buffer_size

OSSOUTFILE スレッドが使用できるメモリサイズです。有効値:102400 ~ 536870912。デフォルト値:134217728。単位:Byte。一般的に、メモリ量が多いほどエクスポート速度が速くなります。

loose_max_oss_outfile_threads

PolarDB が同時に起動できる OSSOUTFILE スレッド数です。有効値:1 ~ 100。デフォルト値:1。単位:個。

クラスター内で現在実行中の OSSOUTFILE スレッド数を確認するには、コマンド SHOW STATUS LIKE "Oss_outfile_threads_running"; を使用します。

説明

このパラメーターは、PolarDB MySQL エディション バージョン 8.0.1.1.38 以降を実行しているクラスターでは無効になります。

説明

OSSOUTFILE 機能を使用して CSV ファイルを OSS エンジンにエクスポート中にクラスターが使用する最大メモリ総量は、次の式で表されます。

loose_max_oss_outfile_threads * loose_oss_outfile_buffer_size

OSSOUTFILE 機能がノードの合計メモリの 5 % を超えて使用しないようにしてください。そうしないと、そのノード上の他のワークロードに影響を与える可能性があります。

使用方法

構文

SELECT * FROM table_name INTO OSSOUTFILE 'outfile_path' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';
説明
  • COLUMNS TERMINATED BY:フィールド間の区切り文字を指定します。

  • OPTIONALLY ENCLOSED BY:フィールド値を囲む文字を指定します。OPTIONALLY を指定すると、文字列型のフィールドのみが囲まれます。指定しない場合は、すべてのフィールドタイプが囲まれます。

  • NULL_MARKER BY:出力ファイルにおける NULL 値の表示方法を指定します。NULL 出力値は、以下の優先度順(高 → 低)に従って決定されます。

    • NULL_MARKER:NULL 出力値を直接定義します。NULL_MARKER は任意の値に設定できます。これが最も高い優先度を持ちます。

    • ESCAPED BY:単一文字のみを受け付けます。NULL 出力値は、その文字の後に N を続けたものになります。例として、ESCAPED BY '\' の場合、NULL は \N として表示されます。これが 2 番目の優先度を持ちます。

    • NULL(デフォルト):上記のいずれも指定されていない場合、NULL は文字列 “NULL” として表示されます。これが最も低い優先度を持ちます。“NULL” 文字列は ENCLOSED 文字で囲まれません。

  • LINES TERMINATED BY:行区切りを指定します。

詳細については、MySQL 公式ドキュメントをご参照ください。

Parameter Description

パラメーター

説明

outfile_path

OSS 内のファイルの場所を指定し、以下の要素で構成されます。

これらの 3 つの要素を / で結合します。一意のタスクパスには複数の / 文字を含めることができ、ネストされたディレクトリを表します。OSS エンジンへのアップロード後、完全なファイルパスは「OSS サーバーパス + 一意のタスクパス」となります。outfile_path には最終的なファイル名を含める必要があります。

table_name

テーブル名。

操作手順

OSS サーバーの作成

CREATE SERVER outserver FOREIGN DATA WRAPPER oss OPTIONS ( EXTRA_SERVER_INFO '{"oss_endpoint": "oss-cn-zhangjiakou-internal.aliyuncs.com", "oss_bucket": "polardb", "oss_access_key_id": "*******", "oss_access_key_secret": "********", "oss_prefix":"B_outfile"}');                 
説明
  • この例では、新バージョン向けの OSS サーバー作成ステートメントを使用しています。ご利用のクラスターの Milvus バージョンに応じてステートメントを調整してください。

  • oss_endpoint は、形式が oss-{xxx}-internal.aliyuncs.com の内部ネットワークアドレスである必要があります。

OSS へのエクスポート

アップロードされる OSS ファイル oss://polardb/B_outfile/tpch/1t/parallel-lineitem.CSV を例に挙げます。

  • バケット名:polardb。

  • パスおよびファイル名:B_outfile/tpch/1t/parallel-lineitem.CSV

SELECT * FROM lineitem INTO OSSOUTFILE 'outserver/tpch/1t/parallel-lineitem.CSV' COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY 'NULL' LINES TERMINATED BY '\n';

メモリおよびスレッド使用量の確認

ご利用のクラスターの Milvus バージョンが 8.0.1.1.38 以降の場合、現在のエクスポートタスクのリアルタイムでのメモリ総使用量およびスレッド総使用量を確認するには、次のコマンドを使用します。

  • リアルタイムでのメモリ総使用量(Byte 単位)を確認します。

    SHOW STATUS LIKE "%Oss_outfile_memory_used%";
  • リアルタイムでのスレッド総数を確認します。

    SHOW STATUS LIKE "%Oss_outfile_threads_running%";
説明

クラスターのエンドポイントを使用してエクスポートタスクを実行する場合、正確なノードのメモリリソース使用量を確認するには、SHOW STATUS コマンドとエクスポートコマンドの両方を同じノード上で実行する必要があります。

次のステップ

よくある質問

OSS へのエクスポート時に、次のエラーが発生しました:ERROR 1086 (HY000): File 'xxxx' already exists

このエラーは、OSS 内に同名のファイルがすでに存在することを意味します。以下のいずれかの方法で対処してください。

  • OSS 内の既存ファイルを手動で削除し、SELECT ... INTO OSSOUTFILE ... ステートメントを再実行します。

  • Hint 構文 OSS_REPLACE_EXISTED_FILE() を使用して、既存ファイルを上書きします。形式は次のとおりです。

    SELECT /*+ OSS_REPLACE_EXISTED_FILE() */ * FROM lineitem INTO OSSOUTFILE 'outserver/tpch/1t/parallel-lineitem.CSV' COLUMNS TERMINATED BY '|@|' OPTIONALLY ENCLOSED BY '"' NULL_MARKER BY "" LINES TERMINATED BY '\n';
    説明
    • この Hint 構文は、OSS 内の既存ファイルを強制的に上書きします。OSS のバージョン管理が有効になっていない場合、上書きされたファイルを回復できません。実行前に OSS のバージョン管理を有効化することを検討してください。

    • この Hint 構文を使用するには、ご利用の PolarDB クラスターが次のいずれかのバージョンである必要があります。

      • カーネルバージョンMySQL 8.0.1 で、リビジョンバージョンが 8.0.1.1.31 以降であること。

      • カーネルバージョンMySQL 8.0.2 で、リビジョンバージョンが 8.0.2.2.9 以降であること。

OSS へのエクスポート時に、次のエラーが発生しました:OSS error: error message : The bucket you access does not belong to you., error code: AccessDenied

このエラーは、RAM ユーザーまたは Alibaba Cloud アカウントのAccessKey に該当 OSS バケットへの権限がないことを意味します。AccessKey の権限を確認してください。