日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用COPY命令導出本地數據

本文為您介紹如何使用COPY命令導入本地的數據至Hologres或從Hologres中導出數據至本地。

使用限制

使用COPY命令的限制說明如下:

  • 當前COPY命令支持的數據類型與Hologres引擎支持的數據類型一致,詳情參見數據類型匯總

  • 如果導入的是分區表數據,則Hologres只支持導入數據至分區表子表,不支持導入數據至分區表父表。

  • Hologres僅支持使用COPY FROM STDIN命令導入數據和COPY ( query ) TO STDOUT命令導出數據。

  • 在v1.1.43+版本中,當COPY FROM STDIN時,支持表中有DEFAULT關鍵字以及serial類型字段,早期版本不支持。

  • 不支持僅向表中的某一列導數據。

更多關于COPY命令的用法請參見COPY指令

命令格式

COPY FROM命令用于從客戶端的標準輸入導入數據至Hologres;COPY TO 命令用于將Hologres數據導出至本地文件。

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格式。僅導出數據、FIXED COPY模式導入數據支持BINARY格式。

DELIMITER

指定的字段分隔符。

文本格式默認為制表符,CSV格式默認為半角逗號(,)。例如DELIMITER AS ','

NULL

指定表示一個空值的字符串。

  • TEXT格式:默認是\N

  • CSV格式:默認是一個未加引用符的空串。

  • BINARY格式:不支持該選項。

HEADER

指定文件包含標題行,其中包含每一列的名稱。

說明

僅CSV格式支持該選項。

QUOTE

指定一個數據值被引用時使用的引用字符,必須是一個單一的單字節字符。

說明

僅CSV格式支持該選項。默認為雙引號。

ESCAPE

指定應該出現在一個匹配QUOTE值的數據字符之前的字符,必須是一個單一的單字節字符。

說明

僅CSV格式支持該選項。默認和QUOTE值相同。

FORCE_QUOTE

強制對指定列中的所有值使用引號(NULL除外)。

說明

COPY TO命令使用CSV格式時支持該選項。

FORCE_NOT_NULL

不將指定列的值與空字符串匹配。空值會被讀取為零長度字符串,而非NULL。

說明

COPY FROM命令使用CSV格式時支持該選項。

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

      • 阿里云賬號:當前阿里云賬號的AccessKey ID。您可以單擊AccessKey 管理,獲取AccessKey ID。

        建議使用環境變量的方式調用用戶名和密碼,降低密碼泄露風險。

      • 自定義賬號:自定義賬號的用戶名,例如BASIC$abc。

      port

      Hologres實例的公共網絡端口。

      示例取值80

      endpoint

      Hologres實例的公共網絡地址。

      示例取值xxx-cn-hangzhou.hologres.aliyuncs.com

      databasename

      Hologres的數據庫名稱。

      詳情請參見創建數據庫

      示例取值mydb

      table

      Hologres數據庫中待導入數據的表名。

      filename

      需要導入的本地文件路徑。

      示例取值D:\tmp\copy_test.csv

      如下示例將指導您在終端執行命令導入本地文件至Hologres。

      • 輸入命令導入本地文件copy_test至Hologres。執行命令其中,插入的標準文件內容如下:

        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/feng/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();
          //set db user
              props.setProperty("user", "******");//當前賬號的AccessKey ID,建議通過環境變量調用,降低密碼泄露風險。
          //set db password
              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/feng/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();
          //set db user
              props.setProperty("user", "******");//當前賬號的AccessKey ID,建議通過環境變量調用,降低密碼泄露風險。
          //set db password
              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開發頁面的頂部菜單欄,單擊數據方案

  3. 在左側導航欄,選擇一鍵本地文件導入 > 新建數據導入

  4. 配置一鍵本地文件上傳對話框中選擇目標表頁面的各項參數。一鍵本地文件上傳

    參數

    描述

    作業名稱

    新建的作業名稱。

    實例名

    選擇已登錄的實例名稱。

    目標庫

    Hologres對應實例中已創建的數據庫名稱。

    目標Schema

    Hologres中已創建的Schema名稱。

    如果您沒有新建Schema,則只能選擇默認創建的public。如果有新建的Schema,您也可以選擇新建的Schema。

    選擇要導入的數據表

    用于存儲本地文件的表名稱。

    導入本地文件前,您需要在目標數據庫中創建一張用于存儲本地文件的表。

  5. 單擊下一步,配置選擇數據源表頁面的各項參數。

    參數

    描述

    選擇文件

    需要上傳的本地文件。

    僅支持上傳TXT、CSV和LOG類型的文件。

    說明

    數據文件列的順序必須和表定義的列順序一致,且列的個數相同。

    選擇分隔符

    • 逗號

    • Tab

    • 分號

    • 空格

    • |

    • #

    • &

    您也可以自定義分隔符。

    原始字符集

    • GBK

    • UTF-8

    • CP936

    • ISO-8859

    首行為標題

    勾選則設置首行數據為標題。

  6. 單擊下一步,單擊導入總覽頁面的執行,完成本地文件一鍵導入。

    導入總覽頁面您可以查看本地文件導入的Schema、數據庫、表等信息。