ITPub博客

首页 > 数据库 > 国内数据库 > SQLLDR像素级模仿:gs_loader工具简介

SQLLDR像素级模仿:gs_loader工具简介

原创 国内数据库 作者:u_aa03cac0d7fc 时间:2024-12-26 18:26:10 0 删除 编辑

gs_loader简介

gs_loader是openGauss的一个命令行工具,主要用于将外部数据文件中的数据快速加载到数据库表中‌。它其实是利用\COPY的功能来做数据导入工作,将控制文件支持的语法转换为\COPY语法,通过控制文件可以定义数据源、编码格式、列的控制方式等。

gs_loader可以在导入过程中会生成错误日志文件,帮助用户识别和解决导入过程中的问题‌。

而MogDB 5.2版本对gs_loader进一步增强,像素级模仿oralce的sqlldr用法。

主要功能包括如下:

支持命令行参数userid、control、rows、skip

支持控制文件参数如下:

  • LOAD DATA
  • INFILE
  • APPEND
  • TRUNCATE
  • INTO TABLE
  • FIELDS TERMINATED BY
  • OPTIONALLY ENCLOSED BY
  • TRAILING NULLCOLS
  • BEGINDATA

支持生成日志文件(*.log)

支持生成错误数据文件(*.bad)

支持数据本身在控制文件中 (BEGINDATA)

支持设置多字符分隔符

支持指定导入字段

支持设置字符串包裹符

gs_loader日志配置

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

export gs_loader_log_level = debug|info|warning|error

gs_loader错误日志处理

直接使用COPY命令时,错误记录将插入到pgxc_copy_error_log,gs_loader在导入过程中会生成错误日志文件。

gs_loader使用权限

当使用者为普通用户的时候,需要管理员用户对普通用户赋权。管理员账户可以直接使用。

gs_loader使用示例

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

CREATE USER load_user WITH PASSWORD '************';

2.将public schema权限赋给新的用户

GRANT ALL ON SCHEMA public TO load_user;

3.创建新用户并授权

新用户授权gs_copy_summary执行结果汇总表和pgxc_copy_error_log错误表

gs_copy_summary表记录COPY执行结果汇总,包括成功行数,出错行数,忽略行数,空行数。

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

4.切换到普通用户load_user,并创建业务表

\c - load_user

创建业务表loader_tbl

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

5.创建gs_loader所需的控制文件loader.ctl

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

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

6.模拟数据文件data.csv

在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

7.执行gs_loader导入

gs_loader control=loader.ctl data=data.csv log=loader.log bad=loader.bad discard=loader.discard create=false clean=true errors=5 host=127.0.0.1  port=5090 db=postgres passwd=**** user=admin

执行结果:

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

查看错误记录

 cat loader.bad 
 a,ERROR int,,2007-07-8
 8,ERROR date,,2007-37-8
  ,
 8,ERROR fields,,2007-37-8

参考链接

DarkAthena:https://www.modb.pro/db/1847308456702861312

https://docs.opengauss.org/zh/docs/latest/docs/ToolandCommandReference/gs_loader.html

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69978456/viewspace-3060505/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-06-12

  • 博文量
    102
  • 访问量
    50360