环境: PDI 8.2  ,windows, oracle 12C,  postgres 12

整个过程性能很好,10分钟+1分钟完成。接下是动态更新任务。

所使用的时间戳字段必须是按时间入库的字段,不能是业务数据的时间戳字段。比如入库时间是递增的,业务里面的某一个时间戳字段不一定就是递增的。

在spoon上,建立一个数据库连接postgres_150,并共享出来。
建议使用jndi的方式,下面更新后,需要重启spoon(这是它的缺点)
simple-jndi/jdbc.properties的设置如下:

postgres_150/type=javax.sql.DataSource
postgres_150/driver=org.postgresql.Driver
postgres_150/url=jdbc:postgresql://ip:ports/yourdatabase
postgres_150/user=username
postgres_150/password=****

1.建立时间中间表

create table D_BZDZ_MLP_TIMES
(id           NUMERIC not null,last_load    TIMESTAMP(6),current_load TIMESTAMP(6)
)

插入初始化的数据

INSERT INTO topology.d_bzdz_mlp_times(id, last_load, current_load)VALUES (1, to_timestamp('1971-01-01 01:01:01','YYYY-MM-DD HH24:MI:SS'),
to_timestamp('1971-02-02 01:01:01','YYYY-MM-DD HH24:MI:SS') );# 或者
INSERT INTO topology.d_bzdz_mlp_times(id, last_load, current_load)VALUES (1, '1971-01-01 01:01:01'::timestamp,'1971-01-01 01:01:01'::timestamp);

2..先把数据一次性从Oralce导入postgres,采用表输入和表输出
在表输出中通过SQL建立表,添加gemo字段,注意Oracle与postgres数据类型的不一样。

如果目标表和源表的字段类型不一致,需要在select * ^语句中转换,比如to_number("string")把字符串转成数字

create table D_BZDZ_MLP_new
(systemid        VARCHAR(50),sssqcjwhdm      VARCHAR(13),ssjlxdm         VARCHAR(20),sspcsdm         VARCHAR(12),dzxxd           TEXT,
...........       ......zxjd            NUMERIC(30,20),zxwd            NUMERIC(30,20),geom            GEOMETRY(Point,4326),zxzt            TEXT,smzt            TEXT,sffw            TEXT,uuid            VARCHAR(50),cccjsj          TIMESTAMP(6),lastupdatedtime TIMESTAMP(6)
)

Postgres中对表建立索引
不建立索引的话,后面的插入/更新转换步骤会非常慢。
因为插入/更新都需要进行select操作(这里是select systemid ***),再决定是插入还是更新。

create index d_bzdz_mlp_idx_sysid on d_bzdz_mlp(systemid);

然后建立一个转换,从Oralce中输入,输出到Postgres,一次性批量输出数据。

具体步骤包括:获取系统时间、更新时间中间表、获取时间中间表数据、查询数据、表输出。
记下上面同步完毕的时间,对时间中间表进行更新:

update topology.D_MLP_TIMES set last_load = current_load where id=1;

3.建立四个转换,用一个作业把这四个转换运转起来。
3.1时间同步转换
从systemdate 获取当前时间,插入更新时间中间表的 当前时间
3.2 数据同步转换。
按照时间中间表,从oracle中查询变化的数据

SELECTLAST_LOAD last_load
, CURRENT_LOAD current_load
FROM topology.D_BZDZ_MLP_TIMES

last_load 和 current_load 作为参数传入下面的查询

SELECTsystemid,.....zxjd,zxwd,
......cccjsj,lastupdatedtime
FROM LG.D_MLP
WHERE (x > 112.916 and x <114.082 and y>22.526 and y>24.005) AND lastupdatedtime >= ? AND lastupdatedtime < ?

把上面表输入的数据,插入/更新到postgres
以systemid作为查询的关键字

3.3 时间中间表同步转换
这是一个SQL脚本转换

update topology.D_BZDZ_MLP_TIMES set last_load = current_load where id=1;

3.4 更新geom字段

update table set geom=ST_SetSRID(st_point(x,y),4326) where geom is null ;

kettle 同步Oracle 与 Postgres相关推荐

  1. Kettle连接Oracle

    kettle通过域名或者IP连接Oracle,因为今天客户要求把数据库由原来的MySQL切换到Oracle,历史数据的迁移.本篇博客主要讲解kettle连接Oracle数据库.本机不需要安装Oracl ...

  2. kettle 连接 Oracle 异常

    kettle 连接 Oracle 异常 参考文章: (1)kettle 连接 Oracle 异常 (2)https://www.cnblogs.com/taadis/p/10622297.html 备 ...

  3. Navicate在同步oracle数据,不同数据库之间同步

    下载网站:www.SyncNavigator.CN   客服QQ1793040 ---------------------------------------------------------- 关 ...

  4. kettle oracle数据从库到库,kettle 使用oracle数据库当做资源库

    kettle 使用oracle数据库当做资源库 kettle 使用oracle数据库当做资源库 连接oracle 12C数据库同理 第二步 找到kettle的安装目录下的 jdbc.propertie ...

  5. Ogg For Bigdata 同步Oracle数据到KAFKA(包括初始化历史数据)

    OGG同步Oracle数据到KAFKA:OGG初始化进程初始化历史数据 在前面曾写过几篇关于OGG同步Oracle等库数据到kafka的文章: OGG实时同步Oracle数据到Kafka实施文档(供f ...

  6. 【大数据实时数据同步】超级详细的生产环境OGG(GoldenGate)12.2实时异构同步Oracle数据部署方案(中)

    系列文章目录 [大数据实时数据同步]超级详细的生产环境OGG(GoldenGate)12.2实时异构同步Oracle数据部署方案(上) [大数据实时数据同步]超级详细的生产环境OGG(GoldenGa ...

  7. kettle连接Oracle数据库详细步骤

    kettle连接Oracle数据库详细步骤 JDK版本:1.8.0_281 PDI(kettle的新名字)版本:7.1.0.0-12 首先打开 "pdi-ce-7.1.0.0-12\data ...

  8. 使用OGG/Kettle实现Oracle到MySQL数据平滑迁移

    本文目录: 一.OGG概述 (一)OGG逻辑架构 二.迁移方案 (一)环境信息 (二)表结构迁移 (三)数据迁移 1.源端OGG配置 (1)Oracle数据库配置 (2)Oracle数据库OGG用户创 ...

  9. kettle读取不到oracle,kettle链接Oracle数据库,百试不爽!

    今天关于kettle在新建oracle数据连接失败的原因及处理办法在此给大家进行详细解析.(此文档有图片,有详细图片的word文档点击此处下载) 具体:工具-向导-创建数据连接向导-输入数据库连接名称 ...

  10. oracle standby同步,ORACLE 利用rman增量备份同步standby库

    standby库归档日志断档,故standby库不能利用恢复归档日志和生产库保持同步,因生产库有1T多,重拉数据将非常耗时,遂利用RMAN对生产库进行增量备份,将增量备份集合成到standby库,利用 ...

最新文章

  1. zend studio自动添加文件注释和方法注释
  2. ossfs工具将OSS挂载到阿里云linux系统目录例子
  3. 《推荐系统实战(二)》音乐推荐系统(数据清洗、召回、排序)
  4. MetadataReader、ClassMetadata、AnnotationMetadata的简单使用
  5. 计算机五笔是什么时候学的吗,电脑五笔打字入门口诀(5分钟就能学会五笔)...
  6. Linux的百度云有限速吗,mac(linux)下配置aria2解决百度云限速问题
  7. 小米与泰尔实验室联合发布《多模态技术白皮书》
  8. 松下plc编程软件_松下PLC编程软件Control FPWIN Pro7.3.2.0
  9. 组装计算机硬盘的选购,组装电脑教程:DIY组装电脑怎么选择硬盘
  10. 查询2021高考成绩位次,2021年江苏高考位次表及高考个人成绩排名查询
  11. CSS改变table内置tbody滚动条
  12. 一切成功源于积累——20140928 认识货币——英镑
  13. Pluck Cms文件上传结合命令执行复现
  14. 关于校园招聘 - 秋招和春招
  15. Day9 化学方程式配平
  16. 无线AP和无线路由器区别 wifi热点
  17. Hello Playwright:(8)等待页面加载
  18. 一篇文章扫盲手机SIM卡相关知识
  19. Java三种设计模式
  20. JAVA基础班入学考试试卷

热门文章

  1. rails3 使用nifty
  2. macOS看视频卡顿如何修复
  3. [计算机组成原理]定点数运算及溢出检测
  4. jshop的下载和导入
  5. Bmob后端云的使用
  6. Bmob后端云实现无后端开发APP
  7. qml 纯代码实现漂亮的switch控件
  8. 利用Python和OpenCV将图像灰度图转为3D图并显示
  9. 那村的人儿(村长)第十期数码照片后期处理全套培训教程
  10. Netflix和它的混世猴子