暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

原创 彭冲 2024-12-11
687

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

最后修改时间:2024-12-11 11:31:39
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论