kettle实现 数据库TestA中的UserA表到数据库TestB的UserB表的数据拷贝

一、首先新建数据库和相关表格

IF EXISTS(SELECT 1 FROM sysdatabases WHERE NAME=N'TestA')
BEGIN
    DROP DATABASE TestA   --如果数据库存在先删掉数据库
END
GO

CREATE DATABASE TestA
go
use TestA
-- 建立一个测试的用户表
create table usersA
(
    id int not null,
    userid varchar(50) not null,
    username varchar(200) null
)
go
-- 插入3条记录
insert into usersA values(1,'lisi','李四');
insert into usersA values(2,'zhangsan','张三');
insert into usersA values(3,'lisi','李四');
go

use master
IF EXISTS(SELECT 1 FROM sysdatabases WHERE NAME=N'TestB')
BEGIN
    DROP DATABASE TestB  --如果数据库存在先删掉数据库
END
GO
CREATE DATABASE TestB
use TestB
-- 建立一个测试的用户表
create table usersB
(
    id int not null,
    userid varchar(50) not null,
    username varchar(200) null
)
go

二、kettl实现

功能简述:数据库TestA中的UserA表到数据库TestB的UserB表;

实现流程:建立一个转换和一个作业Job;

A:建立一个转换:打开Kettle.exe,选择没有资源库,进入主界面,新建一个转换,转换的后缀名为ktr,转换建立的步骤如下:

步骤1:创建DB连接,选择新建DB连接,如下图,我们输入相应的Sqlserver配置信息之后点击Test按钮测试是否配置正确!

我们需要建立两个DB连接,分别为TestA和TestB;

步骤2:建立步骤和步骤关系,点击核心对象,我们从步骤树中选择【表输入】,如下图,这样拖拽一个表输入之后,我们双击表输入之后,我们自己可以随意写一个sql语句,这个语句表示可以在这个库中随意组合,只要sql语句没有错误即可,我这里只是最简单的把TestA中的所有数据查出来,语句为select * from usersA。

接下来我们创建另外一个步骤【插入/ 更新】,然后在【表输入】上同时按住shift键和鼠标左键滑向【插入/ 更新】,这样建立两个步骤之间的连接,【插入/ 更新】执行的逻辑是如果UserA表中的记录在UserB中不存在那么就插入,如果存在就更新,如下图,在插入更新中我们可以做一些关键条件和字段映射,这里我们是最简单的!点击保存,把我们建立的转换保存一下。

建立好转换之后,我们可以直接运行这个转换,检查一下是否有错,如图,有错误都会在下面的控制台上输出。

B:如果我们需要让这个转换定时执行怎么办呢,那么我们需要建立一个作业job,见下图,在简单表同步这个转换中,我们把在A步骤中建立的ktl配置上,注意路径的正确性;

这样我们在【Start】步骤上面双击,如图:

这样这个作业就制定好了,点击保存之后,我们就可以在图形化界面上点击开始执行了!

猜你喜欢

转载自blog.csdn.net/bird_tp/article/details/83756901