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

AnalyticDB:\COPY コマンドを使用したローカルデータのインポート

最終更新日:Mar 29, 2026

psql コマンドラインインターフェイス (CLI) 内の \copy コマンドを使用して、ローカルのテキストファイルを AnalyticDB for PostgreSQL インスタンスに直接インポートします。サーバー側のファイルアクセスは不要です。

重要

\copy はコーディネーター ノードを経由してデータをシリアルに書き込みます。小規模から中規模のデータセットには適していますが、大規模な並列インポートには不向きです。大量データのロードには、OSS を基盤とする外部テーブルをご利用ください。詳細については、「OSS からデータをインポートするための外部テーブルの使用」をご参照ください。

\copy と COPY の使い分け

両コマンドの構文は同一です(PostgreSQL ドキュメントの「COPY」を参照)が、実行されるコンテキストが異なります。

\copy は psql クライアント上で実行され、ローカルマシンからファイルを読み取ります。ファイルへのアクセスおよび権限は、データベースサーバーではなくローカルユーザーによって管理されます。つまり、SUPERUSER 権限は不要です。AnalyticDB for PostgreSQL は SUPERUSER 権限を付与しないため、サーバー側の COPYFILE を使用することはできません。\copy を代わりに使用してください。

\copyCOPY
実行場所psql クライアントデータベースサーバー
ファイル読み取り元ローカルマシンサーバーファイルシステム
SUPERUSER 権限の必要性不要必要(FILE アクセス時)
ハンドルFILE、STDIN、STDOUTSTDIN、STDOUT のみ

前提条件

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

  • psql がインストール済みであり、ご利用の AnalyticDB for PostgreSQL インスタンスに接続済みであること

  • インポートするローカル テキストファイル

  • ターゲットテーブルに対して書き込み権限があること

ローカルファイルのインポート

psql セッション内で \copy コマンドを実行し、ファイルをテーブルにロードします。

\COPY table [(column [, ...])] FROM {'file' | STDIN}
[ [WITH]
  [OIDS]
  [HEADER]
  [DELIMITER [ AS ] 'delimiter']
  [NULL [ AS ] 'null string']
  [ESCAPE [ AS ] 'escape' | 'OFF']
  [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
  [CSV [QUOTE [ AS ] 'quote']
  [FORCE NOT NULL column [, ...]]
  [FILL MISSING FIELDS]
  [[LOG ERRORS [INTO error_table] [KEEP]
  SEGMENT REJECT LIMIT count [ROWS | PERCENT] ]

例: ローカルファイルからすべての行を test1 という名前のテーブルにインポートします。

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

インポート結果の確認

\copy の実行後、データが正常にロードされたかを確認します。

SELECT COUNT(*) FROM test1;

行数がソースファイルと一致した場合、インポートは完了です。

LOG ERRORS を指定して実行した場合は、拒否された行を確認するためにエラーテーブルをクエリします。

SELECT * FROM error_table;

psql ではなく JDBC を使用する

プログラムによるデータインポートを行うには、Java Database Connectivity (JDBC) をご利用ください。PostgreSQL JDBC ドライバーは CopyIn インターフェイスを提供しており、これは COPY 文をラップしています。詳細については、PostgreSQL JDBC ドキュメントの「Interface CopyIn」をご参照ください。

次のステップ