openGauss这么多工具?到底要选哪个?(52)

118 阅读3分钟

#openGauss #入门 #安装 #数据库 #开源

知识来源:docs-opengauss.osinfra.cn/zh/

使用指导

  1. (非三权分立)仅对于普通用户。

    1. (在管理员用户下)创建用户:

      CREATE USER load_user WITH PASSWORD '************';
      
    2. (在管理员用户下)将public schema权限赋给用户:

      GRANT ALL ON SCHEMA public TO load_user;
      
    3. (在管理员用户下)创建并给用户授权gs_copy_summary表:

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

      说明: 如果guc参数enable_copy_error_log未设置(默认为off),或者设置为off,则无需使用错误表,无需创建。否则需要创建该错误表。

      SELECT copy_error_log_create() WHERE NOT EXISTS(SELECT * FROM pg_tables WHERE schemaname='public' AND tablename='pgxc_copy_error_log');
      GRANT ALL PRIVILEGES ON  public.pgxc_copy_error_log To load_user;
      
    5. 切换用户。

      \c - load_user
      
  2. (三权分立)对于普通用户和管理员用户。

    1. (在初始用户下)创建用户:

      CREATE USER load_user WITH PASSWORD '********';
      
    2. (在初始用户下)切换为load_user用户:

      \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表并添加索引。

      说明: 如果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);
      
  3. 创建表和控制文件,准备数据文件。

    创建表loader_tbl。

    CREATE TABLE  loader_tbl
    (
        ID   NUMBER,
        NAME VARCHAR2(20),
        CON  VARCHAR2(20),
        DT   DATE
    );
    

    (在gs_loader客户端机器上)创建控制文件loader.ctl。

    LOAD DATA
    truncate into table loader_tbl
    WHEN (2:2) = ',' 
    fields terminated by ','
    trailing nullcols
    (
        id integer external,
        name char(32),
        con ":id || '-' || :name",
        dt date
    )
    

    (在gs_loader客户端机器上)创建guc参数文件guc.txt。

    set a_format_copy_version='s1';
    

    (在gs_loader客户端机器上)创建数据文件data.csv。

    1,OK,,2007-07-8
    2,OK,,2008-07-8
    3,OK,,2009-07-8
    4,OK,,2007-07-8
    43,DISCARD,,2007-07-8
    ,,,
    32,DISCARD,,2007-07-8
    a,ERROR int,,2007-07-8
    8,ERROR date,,2007-37-8
    ,,,,
     ,
    8,ERROR fields,,2007-37-8
    ,,,
    5,OK,,2021-07-30
    
  4. 进行导入。

    (在gs_loader客户端机器上)执行导入前,先确认gs_loader工具有可执行权限。确保当前路径有文件写入权限(gs_loader在处理过程中会生成一些临时文件,导入完成后自动删除)。

    gs_loader control=loader.ctl data=data.csv db=testdb bad=loader.bad guc_param=guc.txt errors=5 port=8000 passwd=************ user=load_user
    

    执行结果:

    gs_loader: version 0.1
    
     5 Rows successfully loaded. 
    
    log file is: 
     loader.log
    

说明: gs_copy_summary用于记录调用的copy语法及其详细情况,_[badfile]_bad.log_文件用于记录错误数据及其详细情况。为防止上一次导入时记录的错误数据以及详细情况被覆盖,建议每次执行导入时使用不同的bad参数。如果使用错误表pgxc_copy_error_log记录错误数据以及详细情况,请开启GUC参数enable_copy_error_log。如需删除表中的数据,可以对上述表执行truncate或者delete操作。

#openGauss #入门 #安装 #数据库 #开源

知识来源:docs-opengauss.osinfra.cn/zh/