写在前面
gs_loader是对特定格式的文本文件执行导入,类似于oracle的sqlloader,通过配置ctl文件,ctl控制文件主要是描述文本文件格式,比如字段、列分隔符、字符集等等。
通过描述得知,gs_loader的主要工作场景主要是针对外部数据(异构数据库)进行导入。
学习环境
NODE1(主库) | NODE2(从库) | |
Hostname | pkt_mogdb1 | pkt_mogdb2 |
IP | 10.80.9.249 | 10.80.9.250 |
磁盘 | 20G | 20G |
内存 | 2G | 2G |
数据导入
- 前提条件
通过copy_summary_create函数创建系统表gs_copy_summary。用于记录COPY执行结果汇总,包括成功行数,出错行数,忽略行数,空行数。
call copy_summary_create(); select * from gs_copy_summary; |
- 准备外部数据
为了方便测试,使用Mogeaver客户端工具导出表dump_tables为csv格式,在Mogeaver中选择要导出的表,右键选择“导出数据”,选择csv格式,由于表的数据量较少,所有有造了一点数据,数据量最后是64M。
[omm@pkt_mogdb1 ~]$ cp dump_tables.csv dump_tables_temp.csv [omm@pkt_mogdb1 ~]$ for i in {1..10000};do > cat dump_tables_temp.csv >>dump_tables.csv > done |
- 创建测试表
CREATE TABLE dump_tables_loader ( schemaname name, tablename name, tableowner name, tablespace name, hasindexes varchar(5), hasrules varchar(5), hastriggers varchar(5), tablecreator name, created varchar(50), last_ddl_time varchar(50) ) |
- 编辑ctl
[omm@pkt_mogdb1 ~]$ cat dump_tables_loader.ctl LOAD DATA truncate into table dump_tables_loader CHARACTERSET utf8 fields terminated by ',' trailing nullcols ( schemaname, tablename, tableowner, tablespace, hasindexes, hasrules, hastriggers, tablecreator, created, last_ddl_time ) |
- 数据导入
gs_loader control=dump_tables_loader.ctl data=dump_tables_temp.csv db=db_mogdb passwd=Zkh12345678 user=zkh |
小插曲到来,未找到命令,查看官方文档中的描述如下:MogDB提供客户端和服务器端应用程序(工具),帮助用户更好地维护MogDB,提供的所有工具如表1所示。工具位于安装数据库服务器的$GPHOME/script和$GAUSSHOME/bin路径下。但是我始终没有找到,然后把所有的MogDB压缩包解压了一下,也没有发现此命令,于是去官网提交了一个问题,问题如下:
当前版本不支持gs_loader,期待这个工具快点到来吧,毕竟现实中导入特定格式的文本文件还是非常常见的。
最后
虽然这次实验没有成功,但是我都是一边测试一边记录笔记,所以也发出来吧,记录一下。