gs_loader简介
gs_loader是磐维数据库里的一个命令行工具,主要用于将外部数据文件中的数据快速加载到数据库表中。它其实是利用\COPY的功能来做数据导入工作,将控制文件支持的语法转换为\COPY语法,通过控制文件可以定义数据源、编码格式、列的控制方式等。
gs_loader可以在导入过程中会生成错误日志文件,帮助用户识别和解决导入过程中的问题。
从磐维V2.0-S3.1.0_B01版本开始,用户可以使用gs_loader工具参考oralce的sqlldr方式进行使用。
gs_loader的主要功能包括如下:
支持命令行参数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 sysadmin 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 ','
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=1521 db=postgres passwd=**** user=load_user
执行结果:
pw_loader Results: 10 Rows successfully loaded. log file is: loader.log
参考链接
https://www.modb.pro/db/1866043242299535360




