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

Hologres:COPY コマンドを使用してローカルファイルにデータをエクスポートする

最終更新日:Feb 04, 2026

このトピックでは、COPY コマンドを使用してローカルデータを Hologres にインポートする方法、または Hologres からローカルファイルにデータをエクスポートする方法について説明します。

制限事項

COPY コマンドを使用する場合、次の制限が適用されます。

  • COPY コマンドは、Hologres エンジンと同じデータの型をサポートしています。詳細については、「データの型」をご参照ください。

  • Hologres は、パーティションテーブルの子テーブルへのデータインポートをサポートしていますが、親テーブルへのインポートはサポートしていません。

  • Hologres は、データをインポートするための COPY FROM STDIN コマンドと、データをエクスポートするための COPY ( query ) TO STDOUT コマンドのみをサポートしています。

  • Hologres v1.1.43 以降では、COPY FROM STDIN を使用する際に、テーブルに DEFAULT キーワードまたはシリアル型のフィールドを含めることができます。この機能は、以前のバージョンではサポートされていません。

  • テーブルの 1 つの列にのみデータをインポートすることはできません。

COPY コマンドの詳細については、「COPY コマンド」をご参照ください。

アクセス方法

このトピックで説明するコマンドは、psql クライアントで実行できます。詳細については、「psql クライアント」をご参照ください。

コマンド構文

クライアントの標準入力から Hologres にデータをインポートするには COPY FROM コマンドを使用し、Hologres からローカルファイルにデータをエクスポートするには COPY TO コマンドを使用します。

Hologres は、次の COPY 文の構文をサポートしています。

COPY table_name [ ( column_name [, ...] ) ]
    FROM STDIN
    [ [ WITH ] ( option [, ...] ) ]

COPY { ( query ) }
    TO STDOUT
    [ [ WITH ] ( option [, ...] ) ]

where option can be one of:

    FORMAT format_name
    DELIMITER 'delimiter_character'
    NULL 'null_string'
    HEADER [ boolean ]
    QUOTE 'quote_character'
    ESCAPE 'escape_character'
    FORCE_QUOTE { ( column_name [, ...] ) | * }
    FORCE_NOT_NULL ( column_name [, ...] )
    ENCODING 'encoding_name'

パラメーターの説明

次の表にパラメーターを示します。

パラメーター

説明

table_name

データを受け取る Hologres テーブルの名前。

query

クエリ文。

STDIN

クライアントからの標準入力を指定します。

STDOUT

指定されたクライアントにデータをエクスポートします。

FORMAT

TEXT、CSV、BINARY フォーマットをサポートしています。

デフォルトは TEXT です。BINARY フォーマットは、データのエクスポートと FIXED COPY モードのデータインポートでのみサポートされます。

DELIMITER

フィールド区切り文字を指定します。

TEXT フォーマットのデフォルトはタブ文字です。CSV フォーマットのデフォルトはカンマ (,) です。例:DELIMITER AS ','

NULL

NULL 値を表す文字列を指定します。

  • TEXT フォーマット:デフォルトは \N です。

  • CSV フォーマット:デフォルトは引用符で囲まれていない空文字列です。

  • BINARY フォーマット:このオプションはサポートされていません。

HEADER

ファイルに列名を含むヘッダー行が含まれていることを指定します。

説明

このオプションは CSV フォーマットでのみサポートされます。

QUOTE

データ値を囲む引用符を指定します。1 バイト文字である必要があります。

説明

このオプションは CSV フォーマットでのみサポートされます。デフォルトは二重引用符です。

ESCAPE

QUOTE の値と一致するデータ文字の前に置く文字を指定します。1 バイト文字である必要があります。

説明

このオプションは CSV フォーマットでのみサポートされます。デフォルトでは QUOTE の値と一致します。

FORCE_QUOTE

指定された列のすべての値 (NULL を除く) を強制的に引用符で囲みます。

説明

このオプションは、CSV フォーマットで COPY TO コマンドを使用する場合にのみサポートされます。

FORCE_NOT_NULL

指定された列の値が空文字列と一致するのを防ぎます。空の値は NULL ではなく、長さゼロの文字列として読み取られます。

説明

このオプションは、CSV フォーマットで COPY FROM コマンドを使用する場合にのみサポートされます。

ENCODING

ファイルのエンコーディングを encoding_name として指定します。デフォルトでは、現在のクライアントエンコーディングが使用されます。

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

    • STDIN を使用して Hologres にデータをインポートするには、次のコマンドを実行します。

      -- Hologres テーブルを作成します。
      CREATE TABLE copy_test (
        id    int,
        age   int,
        name  text
      ) ;
      
      -- Hologres テーブルにデータをインポートします。
      COPY copy_test FROM STDIN WITH DELIMITER AS ',' NULL AS '';
      53444,24,wangming
      55444,38,ligang
      55444,38,luyong
      \.
      
      -- テーブル内のデータをクエリします。
      SELECT * FROM copy_test;
      説明

      psql クライアントは STDIN を使用したデータインポートをサポートしています。DataStudio と HoloWeb は現在、コマンドラインからのデータインポートをサポートしていません。

    • STDIN を使用して CSV ファイルを Hologres にインポートします。

      -- Hologres テーブルを作成します。
      CREATE TABLE partsupp ( ps_partkey          integer not null,
                              ps_suppkey     integer not null,
                              ps_availqty    integer not null,     
                              ps_supplycost  float  not null,
                              ps_comment     text not null );
      
      -- CSV ファイルを Hologres テーブルにインポートします。
      COPY partsupp FROM STDIN WITH DELIMITER '|' CSV;  
      1|2|3325|771.64|final theodolites 
      1|25002|8076|993.49|ven ideas
      \.
      
      -- テーブル内のデータをクエリします。
      SELECT * FROM partsupp;
      説明

      psql クライアントは STDIN を使用したデータインポートをサポートしています。DataStudio と HoloWeb は現在、コマンドラインから STDIN を使用して CSV ファイルをインポートすることをサポートしていません。

    • ローカルファイルを Hologres にインポートするには、次のコマンドを実行します。

      psql -U <username> -p <port> -h <endpoint> -d <databasename> -c "COPY <table> from stdin with delimiter '|' csv;" <<filename>;
      説明

      psql クライアントは、STDIN を使用したデータのインポートをサポートしています。DataStudio および HoloWeb は、現在、コマンドラインでの STDIN からのローカルファイルのインポートをサポートしていません。psql クライアントは STDIN (標準入力) からのみデータのインポートをサポートしているため、ファイルデータを標準入力フォーマットに変換する必要があります。

      パラメーターの説明:

      パラメーター

      説明

      username

      • Alibaba Cloud アカウント:ご利用の Alibaba Cloud アカウントの AccessKey ID です。AccessKey ページから AccessKey ID を取得できます。

        漏洩リスクを低減するため、環境変数を設定し、環境変数から AccessKey ID と AccessKey Secret を取得することを推奨します。

      • カスタムアカウント:カスタムアカウントのユーザー名です。例:BASIC$abc。

      port

      Hologres インスタンスのパブリックポート番号。

      例:80

      endpoint

      Hologres インスタンスのパブリックエンドポイント。

      例:xxx-cn-hangzhou.hologres.aliyuncs.com

      databasename

      Hologres データベースの名前。

      詳細については、「データベースの作成」をご参照ください。

      例:mydb

      table

      データをインポートする Hologres テーブルの名前。

      filename

      Hologres にインポートするローカルファイルのパス。

      例:D:\tmp\copy_test.csv

      次の例は、ターミナルでコマンドを実行してローカルファイルを Hologres にインポートする方法を示しています。

      • コマンドを実行して、ローカルファイル copy_test を Hologres にインポートします。

        11212

        標準入力ファイルには、次のデータが含まれています。

        01,01,name1
        02,01,name2
        03,01,name3
        04,01,name4
      • コマンドの実行後、次の図に示すように、psql クライアントで新しく挿入されたデータをクエリできます。查询结果

  • COPY コマンドを使用したローカルファイルへのデータエクスポート

    • \copy を使用して、Hologres データをローカルファイルにエクスポートできます。

      説明

      この方法は psql クライアントでのみサポートされます。

      -- テーブルを作成
      CREATE  TABLE copy_to_local (
        id    int,
        age   int,
        name  text
      ) ;
      
      -- データを挿入
      INSERT INTO copy_to_local VALUES
      (1,1,'a'),
      (1,2,'b'),
      (1,3,'c'),
      (1,4,'d');
      
      -- データをクエリ
      select * from  copy_to_local;
      
      -- ローカルファイルにデータをエクスポート
      \copy (select * from copy_to_local) to '/root/localfile.txt';
    • Hologres データをローカルファイルにエクスポートします。

      説明

      この方法は psql クライアントでのみサポートされます。

      psql -U <username> -p <port> -h <endpoint> -d <databasename> -c "COPY (select * from <tablename>) to stdout with delimiter '|' csv;" ><filename>;
  • CopyManager を使用したインポートとエクスポート

    • CopyManager を使用して JDBC クライアントから Hologres にファイルをインポートするには、次のコマンドを実行します。

      package com.aliyun.hologram.test.jdbc;
      
      import java.io.FileInputStream;
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.sql.*;
      import java.util.Properties;
      
      import org.postgresql.copy.CopyManager;
      import org.postgresql.core.BaseConnection;
      
      public class jdbcCopyFile {
      
          public static void main(String args[]) throws Exception {
              System.out.println(copyFromFile(getConnection(), "/Users/user/Workspace/region.tbl", "region"));
          }
      
          public static Connection getConnection() throws Exception {
              Class.forName("org.postgresql.Driver");
              String url = "jdbc:postgresql://endpoint:port/dbname";
              Properties props = new Properties();
          // DB ユーザーを設定
              props.setProperty("user", "******");// 現在のアカウントの AccessKey ID。パスワード漏洩のリスクを低減するため、環境変数の使用を推奨します。
          // DB パスワードを設定
              props.setProperty("password", "******");// 現在のアカウントの AccessKey Secret。パスワード漏洩のリスクを低減するため、環境変数の使用を推奨します。
              return DriverManager.getConnection(url, props);
          }
      
          /**
           * ファイルをデータベースにインポートします。
           * 
           * @param connection
           * @param filePath
           * @param tableName
           * @return
           * @throws SQLException
           * @throws IOException
           */
          public static long copyFromFile(Connection connection, String filePath, String tableName)
                  throws SQLException, IOException {
              long count = 0;
              FileInputStream fileInputStream = null;
      
              try {
                  CopyManager copyManager = new CopyManager((BaseConnection) connection);
                  fileInputStream = new FileInputStream(filePath);
                  count = copyManager.copyIn("COPY " + tableName + " FROM STDIN delimiter '|' csv", fileInputStream);
              } finally {
                  if (fileInputStream != null) {
                      try {
                          fileInputStream.close();
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
              return count;
          }
      }
    • CopyManager を使用して Hologres データを JDBC クライアント上のファイルにエクスポートするには、次のコマンドを実行します。

      import org.postgresql.copy.CopyManager;
      import org.postgresql.core.BaseConnection;
      
      import java.io.FileOutputStream;
      import java.io.IOException;
      import java.sql.Connection;
      import java.sql.DriverManager;
      import java.sql.SQLException;
      import java.util.Properties;
      
      public class copy_to_local_file {
      
          public static void main(String args[]) throws Exception {
              System.out.println(copyToFile(getConnection(), "/Users/user/Workspace/region.tbl", "select * from region"));
          }
      
          public static Connection getConnection() throws Exception {
              Class.forName("org.postgresql.Driver");
              String url = "jdbc:postgresql://endpoint:port/dbname";
              Properties props = new Properties();
          // DB ユーザーを設定
              props.setProperty("user", "******");// 現在のアカウントの AccessKey ID。パスワード漏洩のリスクを低減するため、環境変数の使用を推奨します。
          // DB パスワードを設定
              props.setProperty("password", "******");// 現在のアカウントの AccessKey Secret。パスワード漏洩のリスクを低減するため、環境変数の使用を推奨します。
              return DriverManager.getConnection(url, props);
          }
      
          /**
           * データベースのデータをクライアントファイルにエクスポートします。
           *
           * @param connection
           * @param filePath
           * @param SQL_Query
           * @return
           * @throws SQLException
           * @throws IOException
           */
          public static String copyToFile(Connection connection, String filePath, String SQL_Query)
                  throws SQLException, IOException {
      
              FileOutputStream fileOutputStream = null;
      
              try {
                  CopyManager copyManager = new CopyManager((BaseConnection)connection);
                  fileOutputStream = new FileOutputStream(filePath);
                  copyManager.copyOut("COPY " + "(" + SQL_Query + ")" + " TO STDOUT DELIMITER '|' csv ", fileOutputStream);
              } finally {
                  if (fileOutputStream != null) {
                      try {
                          fileOutputStream.close();
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
              return filePath;
          }
      }

HoloWeb ビジュアルワンクリックインポート

HoloWeb は、ローカルファイルのビジュアルワンクリックアップロードをサポートしています。次の手順に従ってください。

  1. HoloWeb 開発者ページに移動します。詳細については、「HoloWeb への接続とクエリの実行」をご参照ください。

  2. HoloWeb 開発ページの上部のメニューバーで、Data Solutions をクリックします。

  3. 左側のナビゲーションウィンドウで、Import On-premises File > New Data Import を選択します。

  4. Import On-premises File ダイアログボックスの Select Destination Table ページで、パラメーターを設定します。一键本地文件上传

    パラメーター

    説明

    ジョブ名

    新しいジョブの名前。

    インスタンス名

    ログインしているインスタンスの名前を選択します。

    ターゲットデータベース

    対応する Hologres インスタンスで作成されたデータベースの名前。

    ターゲットスキーマ

    Hologres で作成されたスキーマの名前。

    スキーマを作成していない場合は、デフォルトの public スキーマのみ選択できます。スキーマを作成している場合は、カスタムスキーマも選択できます。

    インポートするデータテーブルの選択

    ローカルファイルを格納するテーブルの名前。

    ローカルファイルをインポートする前に、ターゲットデータベースにファイルを格納するためのテーブルを作成してください。

  5. Next をクリックし、Upload File ページでパラメーターを設定します。

    パラメーター

    説明

    ファイルの選択

    アップロードするローカルファイル。

    TXT、CSV、LOG ファイルのみがサポートされています。

    説明

    データファイル内の列の順序は、テーブルで定義されている列の順序と一致する必要があり、列の数も同じである必要があります。

    区切り文字の選択

    • Comma

    • タブ

    • Semicolon

    • Space

    • |

    • #

    • &

    カスタム区切り文字を定義することもできます。

    ソース文字セット

    • GBK

    • UTF-8

    • CP936

    • ISO-8859

    最初の行をヘッダーとして扱う

    最初の行をヘッダーとして扱うには、このオプションを選択します。

  6. Next をクリックします。Confirm Import Information ページで Upload をクリックして、ローカルファイルのワンクリックインポートを完了します。

    Confirm Import Information ページでは、ターゲットスキーマ、データベース、テーブルなど、データインポートに関する詳細を表示できます。