openGauss 客户端工具:gs_loader(1)

gs_loader

概述

gs_loader工具用于进行数据导入。gs_loader将控制文件支持的语法转换为\COPY语法,然后利用已有的\COPY功能,做主要数据导入工作,同时gs_loader将\COPY结果记录到日志中。

使用gs_loader前请确保gs_loader版本与gsql版本、数据库版本保持一致。

 说明: gs_loader工具当前不支持M-Compatibility数据库。 gs_loader工具当前支持PDB。

安装部署

在存放数据源文件的服务器上,安装并配置gs_loader客户端工具,方便使用gs_loader工具进行数据的导入。

  1. 创建用于存放gs_loader工具包的目录。

    mkdir -p /opt/bin
    
  2. 将gsql工具包上传至新创建的目录中。

    以上传EULER Linux版本的工具包为例,将软件安装包中的gsql工具包“GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_gsql.tar.gz”上传至新创建的目录中。

  3. 在工具包所在的目录下,解压工具包。

    cd /opt/bin
    tar -zxvf GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_gsql.tar.gz
    source gsql_env.sh
    
  4. 验证工具位置及版本信息。

    which gs_loader
    
  5. 验证客户端版本信息。

    gs_loader工具版本与gsql工具版本相对应,直接查询gsql客户端版本即可验证客户端版本信息。

    gsql -V
    
  6. 验证数据库版本信息,确保与客户端工具版本保持一致。

    使用gsql工具成功连接数据库后输入:

    select version();
    

日志等级配置

设置日志级别,可以供开发者查看。设置后会在控制台打印工具运行的相应信息。

export gs_loader_log_level=debug
export gs_loader_log_level=info
export gs_loader_log_level=warning
export gs_loader_log_level=error

使用权限

使用场景分为三权分立场景下及非三权分立场景下的使用。使用者可以选择将guc参数enableSeparationOfDuty设置为on或者off来控制三权分立功能的开启或关闭。

GUC参数enable_copy_error_log是控制是否使用错误表pgxc_copy_error_log的参数,默认为off、即不使用错误表,错误记录直接记录到gs_loader的bad文件中。如果该参数设置为on,则会使用错误表pgxc_copy_error_log,将错误记录插入错误表。

默认场景,不开启三权分立(即enableSeparationOfDuty=off)时,使用者可以是数据库普通用户或管理员用户。当使用者为普通用户的时候,需要管理员用户对普通用户赋权。管理员账户可以直接使用。错误表pgxc_copy_error_log通过GUC参数enable_copy_error_log控制开启和关闭,默认关闭。

  1. 使用管理员用户创建新的用户:

    CREATE USER load_user WITH PASSWORD '************';
    
  2. 将public schema权限赋给新的用户:

    GRANT ALL ON SCHEMA public TO load_user;
    
  3. 创建并给新用户授权gs_copy_summary表:

     说明: gs_copy_summary表中不能含有RULE、TRIGGER、索引函数、行级访问控制、CHECK约束、GENERATED列、DEFAULT列、ON UPDATE列等可能导致提权的对象,否则将认为是恶意用户创建而报错退出。

    SELECT copy_summary_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='gs_copy_summary');
    GRANT INSERT,SELECT ON  public.gs_copy_summary To load_user;
    
  4. (可选)创建并给新用户授权错误表pgxc_copy_error_log:

     说明:

    • 如果guc参数enable_copy_error_log未设置(默认为off),或者设置为off,则无需使用错误表,无需创建。否则需要创建该错误表。
    • pgxc_copy_error_log表中不能含有RULE、TRIGGER、索引函数、行级访问控制、CHECK约束、GENERATED列、DEFAULT列、ON UPDATE列等可能导致提权的对象,否则将认为是恶意用户创建而报错退出。
    SELECT copy_error_log_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='pgxc_copy_error_log');
    GRANT INSERT,SELECT,DELETE ON  public.pgxc_copy_error_log To load_user;
    

开启三权分立(即enableSeparationOfDuty=on)时,使用者可以是数据库普通用户或管理员用户。使用前需要到各自的schema下创建pgxc_copy_error_log表以及gs_copy_summary这两张表并添加索引,不需要再进行授权。

  1. 使用初始用户创建新用户:

    CREATE USER load_user WITH PASSWORD '********';
    
  2. 从初始用户切换为新用户:

    \c - load_user
    
  3. 创建gs_copy_summary表并添加索引:

    CREATE TABLE load_user.gs_copy_summary(relname varchar, begintime timestamptz, endtime timestamptz, id bigint, pid bigint, readrows bigint, skiprows bigint, loadrows bigint, errorrows bigint, whenrows bigint, allnullrows bigint, detail text);
    CREATE INDEX gs_copy_summary_idx ON load_user.gs_copy_summary(id);
    
  4. (可选)创建pgxc_copy_error_log表并添加索引:

     说明:

    1. 如果guc参数enable_copy_error_log未设置(默认为off),或者设置为off,则无需使用错误表,无需创建。否则需要创建该错误表。
    CREATE TABLE load_user.pgxc_copy_error_log (relname varchar, begintime timestamptz, filename varchar, lineno int8, rawrecord text, detail text);
    CREATE INDEX copy_error_log_relname_idx ON load_user.pgxc_copy_error_log(relname);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值