频道栏目
首页 > 资讯 > 其他综合 > 正文

学习gpload导入数据的三种模式insert、update和merge

18-07-20        来源:[db:作者]  
收藏   我要投稿

Pivotal Greenplum Database Documentation v4.3.x

gpload可以将外部数据导入至数据库,并且提供了三种导入模式,基本的导入配置YML文件如下所示:

The basic structure of a load control file is:

---
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"

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'

相关TAG标签
上一篇:服务器上的redis数据库共享设置教程
下一篇:oracle模糊查询中的like和regexp_like用法介绍
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站