gh 加油
最近公司在做项目时,使用oracle采集底层数据,使用greenplum分析加工数据,数据交换使用的是kettle。
本次方案缺点:kettle必须部署在greenplum的主节点
第一步:在greenplum主机安装kettle
第二步:给gpadmin用户授权kettle安装目录读写
第三步:创建一个测试例子
测试例子分为两步:
第一步将oracle的数据转换为txt
第二步将txt的数据同步到gp,如下图
点击查看 greenplum load的配置
描述一下load action :
load action:update/insert/merge 有三种类型,就像oracle类似,只需要关注 get fields 的下方match ,update;一个是匹配,一个是update
merge into a using (select * from b) z
on (match)
update
...
第二部分 local host name
端口号我选择的是gp的对外端口(可以测试一下其他端口5555,6666)
hostname:我选择是gp主机名
port:5432
hostname:master
第三部分:gp configuration
一般情况下,gp的安装路径都在/usr/local/greenplum-db/bin/gpload
control file :可以自己先建立一个文件名
[gpadmin@master gpextdata]$ ls
a.csv b.txt c.txt member_delta.dat my_flag.yml my_load.yml my_update.yml test001.txt test002.txt test_distribute.dat
[gpadmin@master gpextdata]$ cat my_flag.yml
[gpadmin@master gpextdata]$
my_flag.yml没有文件内容
data_file:也可以自己建立一个没有内容的空文件
保存好运行后,数据入库,同时查看 my_flag.yml内容
[gpadmin@master gpextdata]$ ls
a.csv b.txt c.txt member_delta.dat my_flag.yml my_load.yml my_update.yml test001.txt test002.txt test_distribute.dat
[gpadmin@master gpextdata]$ cat my_flag.yml
VERSION: 1.0.0.1
DATABASE: tutorial
USER: user1
HOST: 192.168.1.80
PORT: 5432
GPLOAD:
INPUT:
- SOURCE:
LOCAL_HOSTNAME:
- master
PORT: 5432
FILE: ['/home/admin/gpextdata/c.txt']
- COLUMNS:
- id:
- "name":
- FORMAT: TEXT
- DELIMITER: ','
- QUOTE: ''
- HEADER: FALSE
- ENCODING: UTF8
- ERROR_LIMIT: 50
OUTPUT:
- TABLE: "public.test001"
- MODE: insert
单独这个命令也可以执行
[gpadmin@master gpextdata]gpflod -f my_flag.yml;
备注:在load method的下方 Erase cfg/data files after use 的对勾取消掉
不知道大家有没有方案可以不在本机执行?
远程方案自己已经做完,链接:http://blog.itpub.net/29162273/viewspace-2130770/
其实就是在远程机器中安装greenplum-loader后
配置相关变量,就可以使用了。