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

AnalyticDB:`\copy` コマンドを使用してデータをローカル環境にエクスポートする

最終更新日:Mar 28, 2026

psql の \copy コマンドは、AnalyticDB for PostgreSQL インスタンスから直接ローカルコンピューター上のファイルへデータをエクスポートできます。この操作には SUPERUSER 権限を必要としません。

前提条件

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

  • 実行中の AnalyticDB for PostgreSQL インスタンス

  • psql がインストールされ、ご利用のインスタンスへの接続が設定済みであること(「クライアント接続」をご参照ください)

Data Management (DMS) では \copy コマンドはサポートされていません。\copy を実行するには、psql を使用してください。

仕組み

\copy は、psql のメタコマンドであり、基盤となる SQL COPY コマンドを実行しますが、データの転送先をサーバーではなくクライアント側にルーティングします。つまり、指定されたファイルの読み取り/書き込みをサーバーが行うのではなく、psql がローカルファイルシステム上でその処理を行い、サーバーとローカルファイルシステム間でデータを中継します。このため、ファイルへのアクセスおよび権限はデータベースサーバーではなく、ローカルユーザーによって制御されます。したがって、SUPERUSER 権限は不要です。

`\copy` と `COPY` の違い:

\copyCOPY
実行場所psql クライアントデータベースサーバー
ファイルアクセスローカルファイルシステム(FILE、STDIN、STDOUT)STDIN および STDOUT のみ
スーパーユーザー必須いいえ必要(FILE アクセス時)
AnalyticDB for PostgreSQL では SUPERUSER 権限はサポートされていません。ローカルファイルへのデータエクスポートには \copy をご使用ください。

構文

\COPY {table [(column [, ...])] | (query)} TO {'file' | STDOUT}
    [ [WITH] [OIDS] [HEADER]
      [DELIMITER [ AS ] 'delimiter']
      [NULL [ AS ] 'null string']
      [ESCAPE [ AS ] 'escape' | 'OFF']
      [CSV [QUOTE [ AS ] 'quote']
           [FORCE QUOTE column [, ...]] ]
      [IGNORE EXTERNAL PARTITIONS ] ]

ここで、WITH オプションの説明は以下のとおりです。

オプション説明
OIDS各行の OID を含める
HEADER列名を含むヘッダー行を出力(CSV 形式のみ)
DELIMITER 'delimiter'列を区切る文字(例: ,
NULL 'null string'NULL 値を表す文字列(例: \N
ESCAPE 'escape'CSV 出力時のエスケープ文字
CSVCSV 形式を使用
QUOTE 'quote'CSV 形式での引用符
FORCE QUOTE columnCSV 出力時に指定列を強制的に引用符で囲む
IGNORE EXTERNAL PARTITIONSエクスポート時に外部パーティションをスキップ

構文の詳細については、PostgreSQL ドキュメントの「COPY」をご参照ください。

AnalyticDB for PostgreSQL では、JDBC 経由で COPY 文を実行することも可能です。CopyIn メソッドは JDBC 内にカプセル化されています。詳細については、「Interface CopyIn」をご参照ください。

ローカルファイルへのデータエクスポート

psql を使用してご利用のインスタンスに接続し、\copy コマンドを実行して、テーブルまたはクエリ結果をローカルファイルに出力します。

テーブル全体をエクスポートする場合:

\COPY test1 TO '/path/to/localfile';

CSV 形式およびカスタムデリミタを指定してエクスポートする場合:

\COPY test1 TO '/path/to/localfile.csv' WITH CSV DELIMITER ',';

クエリ結果をエクスポートする場合:

\COPY (SELECT id, name FROM test1 WHERE status = 'active') TO '/path/to/output.csv' WITH CSV HEADER;

以下のプレースホルダーを実際の値に置き換えてください。

プレースホルダー説明
test1エクスポート対象のテーブル名orders
/path/to/localfileローカルマシン上の出力ファイルの絶対パス/home/user/export.csv

次のステップ