zoukankan      html  css  js  c++  java
  • kettle及数据库导数_20160920

    一、kettle是什么。

    Kettle是一款国外开源的ETL( Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程)工具,纯java编写,可以在Window、Linux、Unix上运行,数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出.
     
     二、kettle安装
    注意:设置好环境变量,将kettle 文件夹内的 spoon.bat发送快捷方式到桌面就可以启动了.
     
    三、kettle运行逻辑

    kettle包括作业、转换来进行数据处理的操作,执行步骤逻辑是这样:

    1、执行作业,作业调用转换

    2、调用的转换里面有多个执行步骤
    3、执行步骤里面可以和mysql等主流数据库连接 可以依托SQL语句实现数据处理

    图1:一个作业流程 对应第1个步骤

    图2 一个转换内部步骤 对应步骤2 和步骤3(步骤3就是写SQL)具体字段以处理过的表test数据为范本

     

    因此 如果想实现数据处理的最终结果,需要做的步骤和上面1、2、3顺序完全相反
    1、写SQL语句(更新数据库的和数据报表的)
    2、新建一个转换 连接对应数据库 表输入 表输出 设置好步骤 保存文件
    3、新建一个作业,START--->插入一个转换控件---->右击转换控件--->将第2步的转换导入调用
    保存文件 执行作业即可实现数据的导入

     三、从服务器导数到本地去进行MySQL练习和出一些报表 
    3.1、前提:表输入和表输出 来自的数据表的字段和数据类型完全一致(当然导数也不一定只用kettle)
    在执行转换的步骤里我已经创建了两个mysql数据库连接,一个阿里云服务器连接一个本地localhost 连接
    图3导数转换

     

    3.2导数到本地 服务器和本地数据表字段和数据类型一致

    #导数之前:最下面添加的两个字段productname 和order_date 在服务器数据表里是没有的 因此先创建下面这么多字段和服务器表保持一致
    CREATE TABLE IF NOT EXISTS test_a03(
    city VARCHAR(255),
    username INT(11),
    productID INT(11),
    price DECIMAL(19,4),
    sales INT(11),
    pay_money DECIMAL(19,4),
    order_time DATETIME,
    salesperson VARCHAR(255),
    KEY city(city),
    KEY username(username)
    )ENGINE INNODB DEFAULT CHARSET=utf8 
    #成功导入了200条数据 sql下载在博客底部百度云连接
    

    图4 导数成功

    3.3 修改表名 添加字段 更新字段内容

    #更换表名(和mysql目录文章保持同一个表 以这个数据表进行mysql学习
    #2修改表名 alter table 表名 rename 新表名
    ALTER TABLE test_a03 RENAME test_a03order;
    #3在字段 order_time后面增加一个字段
    ALTER TABLE `test_a03order` ADD order_date DATE AFTER order_time
    #插入的两个新字段内容为空 我们更新一下
    #更新 order_date
    UPDATE test_a03order SET order_date=DATE(order_time) WHERE order_date IS NULL;
    #更新productname
    UPDATE test_a03order SET productname="心灵鸡汤(押瓶1000元)10000ml*24瓶/箱" WHERE productname IS NULL
    #现在执行 select * from test_a03order  数据如下面图
    

      

       嗯。。productname 一样名称,根据username值范围再更新一下,日期包含7、8、9三个月的

    price*sales=pay_money, productID 和productname也能对应  price是变动的这个也比较符合实际 就是押金写的有点大..

    3.4 数据更新完成 

     sql文件放在百度云盘了 下载在本地数据库执行

     链接: https://pan.baidu.com/s/1slzUw6T

  • 相关阅读:
    [题解](组合数/二位前缀和)luogu_P2822组合数问题
    [题解](tarjan割点/点双)luogu_P3225_矿场搭建
    [题解](树形dp/换根)小x游世界树
    [題解](DP)CF713C_Sonya and Problem Wihtout a Legend
    [題解]hdu_6412公共子序列
    [題解](最小生成樹)luogu_P2916安慰奶牛
    [题解](堆)luogu_P1631序列合并
    [题解](最短路)luogu_P5122 Fine Dining
    [题解](次短路)luogu_P2865路障(未)
    [题解](最短路(树))luogu_P5201_short cut
  • 原文地址:https://www.cnblogs.com/Mr-Cxy/p/5890032.html
Copyright © 2011-2022 走看看