kettle基本使用:把数据从一个数据库的一张表抽取到另一个数据库的另一张表 |
您所在的位置:网站首页 › 怎么把一个数据库的表复制到另一个数据库中 › kettle基本使用:把数据从一个数据库的一张表抽取到另一个数据库的另一张表 |
0、准备两个数据库实例(最好位于两台不同的数据库服务器),每个实例中创建好源表和目标表
源表 CREATE TABLE `test_0`.`stu_info` ( `stuNum` VARCHAR(128) NOT NULL COMMENT '学号', `stuName` VARCHAR(45) NOT NULL COMMENT ' 姓名', `stuAge` VARCHAR(45) NOT NULL COMMENT '年龄', `regTime` VARCHAR(45) NOT NULL COMMENT '注册时间', PRIMARY KEY (`stuNum`));分析表 CREATE TABLE `stu_info_analysis` ( `stu_num` varchar(128) NOT NULL, `stu_name` varchar(45) NOT NULL, `stu_age` int(4) NOT NULL, `reg_time` timestamp NOT NULL, PRIMARY KEY (`stu_num`) ) 1、创建jobFile --> New --> Job,在新建的Job上,ctrl+s,命名为stu_etl,保存到文件 2、创建数据连接File --> New --> Database connection... 把这个流程中需要用到的数据库连接全部创建起来,本例中就两个 先测试一下数据源的连通性,如果提示找不到驱动,上Mysql官网下载驱动包: https://dev.mysql.com/downloads/connector/j/ Select Operating System: Platform Independent 由于在mysql-connector-java-5.1.48以后的版本中,用com.mysql.jdbc.Driver替代了org.gjt.mm.mysql.Driver,所以只能下载mysql-connector-java-5.1.48版本的jar包 下载完成之后,解压,把驱动jar包放在data-integration/lib下 创建的数据库连接在 可以看到,然后在建好的数据源上,右键,Share,这样整个工程就都可以用这两个数据源了 3、创建起始点添加Start元素到Job stu_etl中 4、新建transformation。从目标表中取出上次抽取的最大学号,保存到变量中,作为本次抽取的起点File --> New --> Transformation,在新建的Transformation上,ctrl+s,命名为get_start_stunum,保存到文件 将Transformation get_start_stunum添加到Job stu_etl中 转到get_start_stunum 添加Input/Table Input 接着添加Job/Set variable 并把Table Input getMaxStuNum连向这个Set variable 注意,variable scope type需要选择valid the patent job,即父级job可见,这样才能在job中从当前transformation流向下一个transformation 注意,一定要写default value,因为初始的时候,通过Table Input getMaxStuNum拿到的数据肯定是空的,因为分析表里在初始状态下是没有数据的。 5、创建transformation,在上次抽取的基础上接着抽同样在创建Transformation data_from_src_to_anay,添加到job中,并将Transformation get_start_stunum连向Transformation data_from_src_to_anay 在Transformation data_from_src_to_anay上设置传入变量 然后在Transformation data_from_src_to_anay中添加 input/table input从源表中获取数据,由于学生年龄和注册时间两个字段类型不匹配,所以需要必要的转换 注意,由于需要用到Transformation get_start_stunum传过来的变量,所以这里必选勾选Replace variable in script 在input和output中间添加两表的映射关系Transform/select values output/table output将数据存到分析表中 6、创建结束点(Success)这是必须的,否则etl进程所持有的数据库连接等资源将得不到释放 运行,成功!!! |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |