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

Hologres:Use the COPY command to export Hologres data to OSS

最終更新日:Feb 04, 2026

Alibaba Cloud Object Storage Service (OSS) は、安全でコスト効率が高く、信頼性の高いクラウドストレージサービスです。このトピックでは、copy to コマンドと hg_dump_to_oss コマンドを使用して、クエリ結果を指定された OSS のロケーションにエクスポートする方法について説明します。

制限事項

  • 現在の Hologres インスタンスのスーパーユーザー、または pg_execute_server_program 権限を持つユーザーのみが hg_dump_to_oss を使用して Hologres データを OSS にエクスポートできます。スーパーユーザーは、次のコマンドを実行して、他のユーザーに pg_execute_server_program 権限を付与できます。

    -- DB が簡易権限モデルを使用している場合は、次の文を実行します
    CALL spm_grant('pg_execute_server_program','Alibaba Cloud アカウント ID/メールアドレス/RAM ユーザー');
    
    -- DB が標準の PostgreSQL 権限モデルを使用している場合は、次の文を実行します
    GRANT pg_execute_server_program TO Alibaba Cloud アカウント ID/メールアドレス/RAM ユーザー;
  • OSS への 1 回のインポートのデータ量は 5 GB を超えることはできません。

コマンドの概要

  • COPY コマンドCOPY コマンドは、PostgreSQL テーブルと標準ファイルシステム間でデータを移動します。Hologres は COPY コマンドをサポートしています。COPY TO 文は、SELECT クエリの結果をファイルまたは別の出力媒体にコピーします。COPY FROM 文は、ファイルからテーブルにデータをコピーします。

  • hg_dump_to_oss コマンド:Hologres のクエリ結果を指定された OSS のロケーションにダンプします。

COPY コマンド

COPY TO コマンドの構文とパラメーターは次のとおりです。

  • 構文

    COPY ( query ) TO { PROGRAM 'command' | STDOUT }
        [ [ WITH ] ( option [, ...] ) ]

    option には、次のいずれかを指定できます。

    FORMAT [format_name]
    DELIMITER 'delimiter_character'
    NULL 'null_string'
    HEADER
    QUOTE 'quote_character'
    ESCAPE 'escape_character'
    ENCODING 'encoding_name'
  • パラメーター

    パラメーター

    説明

    query

    実行するクエリ文。クエリ文を囲む括弧は必須です。

    PROGRAM

    実行するコマンド。出力はコマンドの標準入力に書き込まれます。

    STDOUT

    出力がクライアントアプリケーションに送信されることを指定します。

    FORMAT

    データ形式を選択します。形式は、テキスト、csv、またはバイナリです。デフォルトはテキストです。

    DELIMITER

    ファイルの各行内の列を区切る文字を指定します。これは 1 バイトの単一文字である必要があります。次のリストは、さまざまなデータ形式のデフォルト文字を示しています:

    • テキスト形式の場合、デフォルトはタブ文字 (\t) です。

    • csv 形式の場合、デフォルトはコンマ (,) です。

    • このオプションはバイナリ形式ではサポートされていません。

    NULL

    NULL 値を表す文字列を指定します。次のリストは、さまざまなデータ形式のデフォルト文字列を示しています:

    • テキスト形式の場合、デフォルトは \N です。

    • csv 形式の場合、デフォルトは引用符で囲まれていない空文字列です。

    • このオプションはバイナリ形式ではサポートされていません。

    HEADER

    ファイルに列名を含むヘッダー行があることを指定します。CSV ファイルのみがこのオプションをサポートします。

    QUOTE

    QUOTE 値に一致するデータ文字の前に表示する必要がある文字を指定します。これは 1 バイトの単一文字である必要があります。デフォルトは QUOTE 値と同じです。CSV 形式のみがこのオプションをサポートします。

    ENCODING

    ファイルが encoding_name でエンコードされていることを指定します。このオプションを省略した場合、現在のクライアントエンコーディングが使用されます。

hg_dump_to_oss コマンド

hg_dump_to_oss コマンドの構文とパラメーターは次のとおりです。Hologres では、hg_dump_to_oss コマンドは COPY TO コマンドと共に使用されます。

  • 構文

    COPY (query) TO PROGRAM 'hg_dump_to_oss --AccessKeyId <accessid> --AccessKeySecret <accesskey> --Endpoint <ossendpoint> --BucketName <bucketname> --DirName <dirname> --FileName <filename> --BatchSize <xxx> ' (DELIMITER ',', HEADER true, FORMAT CSV);
    説明

    /\ などの文字を <dirname> の前に追加しないでください。

  • パラメーター

    パラメーター

    説明

    query

    実行するクエリ文。

    select * from dual;

    AccessKeyId

    ご利用のアカウントの AccessKey ID。

    [AccessKey 管理] ページに移動して、AccessKey ID を取得できます。

    なし

    AccessKeySecret

    ご利用のアカウントの AccessKey Secret。

    なし

    Endpoint

    OSS クラシックネットワークのエンドポイント。

    バケットリストページで対象のバケット名をクリックすると、バケットの詳細を表示できます。

    oss-cn-beijing-internal.aliyuncs.com

    BucketName

    OSS バケットの名前。

    dummy_bucket

    DirName

    出力結果が格納される OSS 内のフォルダ。

    testdemo/

    FileName

    (オプション) OSS 内のファイルの名前。

    file_name

    BatchSize

    hg_dump_to_oss の実行ごとの行数。デフォルトは 1000 です。

    5000

    DELIMITER

    結果の列間の区切り文字。デフォルトはタブ文字 (タブ区切り値、TSV) です。

    ','

使用例

次の例は、Hologres で hg_dump_to_oss コマンドを COPY TO コマンドと共に使用する方法を示しています。

-- Hologres 内部テーブルから指定された OSS のロケーションにデータをダンプします
COPY (SELECT * FROM holo_test LIMIT 2) TO PROGRAM 'hg_dump_to_oss --AccessKeyId <access id> --AccessKeySecret <access key> --Endpoint oss-cn-hangzhou-internal.aliyuncs.com --BucketName hologres-demo --DirName holotest/ --FileName file_name --BatchSize 3000' DELIMITER ',';

-- Hologres 外部テーブルから指定された OSS のロケーションにデータをダンプします
COPY (SELECT * FROM foreign_holo_test LIMIT 20) TO PROGRAM 'hg_dump_to_oss --AccessKeyId <access id> --AccessKeySecret <access key> --Endpoint oss-cn-hangzhou-internal.aliyuncs.com --BucketName hologres-demo --DirName holotest/ --FileName file_name --BatchSize 3000' (DELIMITER ',', HEADER true);

-- リージョン間のダンプを実行して、指定された OSS のロケーションにデータをダンプします
COPY (SELECT * FROM holo_test_1 LIMIT 20) TO PROGRAM 'hg_dump_to_oss --AccessKeyId <access id> --AccessKeySecret <access key> --Endpoint oss-cn-beijing-internal.aliyuncs.com --BucketName hologres-demo --DirName holotest/ --FileName file_name --BatchSize 3000' (DELIMITER ',', HEADER true, FORMAT CSV);
説明

Hologres は、指定された OSS のロケーションへのリージョン間のデータエクスポートをサポートしています。たとえば、中国 (杭州) リージョンのインスタンスからクエリされたデータを、中国 (北京) リージョンの OSS にエクスポートできます。

FAQ

一般的なエラーとそのソリューションを次に示します:

  • ERROR: syntax error at or near ")"LINE 1: COPY (select 1,2,3 from ) TO PROGRAM 'hg_dump_to_oss2 --Acce...

    入力された query が無効です。クエリ文を確認してください。

  • DETAIL: child process exited with exit code 255

    選択した OSS ネットワークタイプが正しくありません。パブリッククラウドを使用している場合は、クラシックネットワークを選択してください。

  • DETAIL: command not found

    DUMP TO OSS[プログラム] パラメーターを hg_dump_to_oss に設定する必要があります。そうしないと、このエラーが発生します。

  • ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 101

    入力された AccessKeyId が無効です。ご利用のアカウントの AccessKey ID を使用してください。

  • ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 102

    入力された AccessKeySecret が無効です。ご利用のアカウントの AccessKey Secret を使用してください。

  • ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 103

    入力された Endpoint が無効です。対応する OSS クラシックネットワークのエンドポイントを確認してください。

  • ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 104

    入力された BucketName が無効です。バケット名を確認してください。

  • ERROR: program "hg_dump_to_oss ..." failed DETAIL: child process exited with exit code 105

    必須パラメーターがありません。パラメーターの説明を確認し、すべての必須パラメーターが設定されていることを確認してください。

  • ERROR: program "hg_dump_to_oss ...” failed DETAIL: child process exited with exit code 255

    このエラーは通常、Hologres サーバーが指定された OSS ネットワークに接続できないために発生します。OSS ドメイン名を変更できます。たとえば、OSS ネットワークタイプとしてクラシックネットワークを選択します。OSS ドメイン名の詳細については、「リージョンとエンドポイント」をご参照ください。