Zhou Study hard, improve every day.

gpload使用

2020-04-28
本文 1930 字,阅读全文约需 6 分钟

1 gpload导入数据的三种模式

insert、update、merge

insert模式适用于全新数据的导入,这时目标数据表中没有要导入的数据,所有外部表中要导入的数据都会新增(insert)到目标数据表中。
update模式适用于目标表已有数据的更新,根据yml配置的配置列来匹配数据对更新列进行更新,也可设置更新条件,满足条件的更新,不满足条件的不进行更新。不支持新增操作。
merge模式包含insert和update,不仅可以进行数据库中没有数据的新增操作;也可以对数据库中已有的数据,外部表(csv文件)中有其相应的更新数据 进行更新操作,以外部表为准进行同步更新。 下面就yml文件中的输出部分的配置进行分析:

OUTPUT 必须项。定义最终source文件加载到的目标表。

TABLE 必须项。目标表。

MODE 可选项。有三种模式:

insert,插入数据;

update,当MATCH_COLUMNS参数值(相当于关联列)等于加载数据时,更新UPDATE_COLUMS参数设置的列(相当于update的列)。 可选设置(不是必需)UPDATE_CONDITION参数(相当于where过滤条件)。

merge,  加载数据时,插入目标表中不存在的数据,更新目标中存在的数据。

MATCH_COLUMNS 在UPDATE或者MERGE模式下使用。相当于关联列。这里写目标表的列名。一般配置唯一列(主键)

UPDATE_COLUMNS 在UPDATE或者MERGE模式下使用。更新的目标表列名。

UPDATE_CONDITION 可选项。目标表的列名,相当于where条件。用在update或者merge模式。目标表中只有满足条件的记录才能更改,(merge情况下,只要是新增数据都可以insert,但只有满足条件的记录才能update)

MAPPING 可选项。如果设置了MAPPING参数,那么前面设置的COLUMNS参数会失效,因为MAPPING级别高于COLUMNS。关联格式:target_column_name: source_column_name。where过滤格式:target_column_name: ‘expression’

2.配置的yml

---
VERSION: 1.0.0.1
DATABASE: db_name
USER: db_username
HOST: master_hostname
PORT: master_port
GPLOAD:
   INPUT:
    - SOURCE:
         LOCAL_HOSTNAME:
           - hostname_or_ip
         PORT: http_port
       | PORT_RANGE: [start_port_range, end_port_range]
         FILE: 
           - /path/to/input_file
         SSL: true | false
         CERTIFICATES_PATH: /path/to/certificates
    - COLUMNS:
           - field_name: data_type
    - TRANSFORM: 'transformation'
    - TRANSFORM_CONFIG: 'configuration-file-path' 
    - MAX_LINE_LENGTH: integer 
    - FORMAT: text | csv
    - DELIMITER: 'delimiter_character'
    - ESCAPE: 'escape_character' | 'OFF'
    - NULL_AS: 'null_string'
    - FORCE_NOT_NULL: true | false
    - QUOTE: 'csv_quote_character'
    - HEADER: true | false
    - ENCODING: database_encoding
    - ERROR_LIMIT: integer
    - ERROR_TABLE: schema.table_name
   EXTERNAL:
      - SCHEMA: schema | '%'
   OUTPUT:
    - TABLE: schema.table_name
    - MODE: insert | update | merge
    - MATCH_COLUMNS:
           - target_column_name
    - UPDATE_COLUMNS:
           - target_column_name
    - UPDATE_CONDITION: 'boolean_condition'
    - MAPPING:
              target_column_name: source_column_name | 'expression'
   PRELOAD:
    - TRUNCATE: true | false
    - REUSE_TABLES: true | false
   SQL:
    - BEFORE: "sql_command"
    - AFTER: "sql_command"

上一篇 gpfdist使用

Comments

Content