其他分享
首页 > 其他分享> > 简单使用kettle转换经销商信息表

简单使用kettle转换经销商信息表

作者:互联网

使用kettle把DMS数据库转换到本地(公司服务器)数据库,帆软报表对数据源的需求从DMS数据库改成这个本地数据库。

据说用帆软直接访问DMS数据库,对DMS可能会造成性能上的影响;就我目前所知,没有这种影响,kettle也是大量select DMS的数据。但是ETL成一个恰当的数据源(中间层),非常有价值。

这是第一次用kettle,所以仅以简单的转换为主,达成能够支持帆软报表的目标即可。更加完善的数仓设计不在本次考虑(维表事实表元数据等)。

 

1、经销商信息,目标字段:

所以,这是一次 Data migration ,迁移一些列和一些行。

考虑仅仅是为了FineReports,又减少了一些字段,定为:

  我准备用UPDATED_TIME作为更新的标准,但是有不确定项:DMS自身是否真正在维护这个字段?目前看来比较像。

 

2、源表名称是dt_bb_dealers,目标表是dms_bb_dealers,字段名称不变。

CREATE TABLE IF NOT EXISTS finedb.dms_bb_dealers LIKE another_db.dt_bb_dealers; -- 复制表结构和索引

CREATE TABLE finedb.dms_bb_dealers As SELECT * FROM another_db.dt_bb_dealers LIMIT 0;  -- 只复制表结构

以上是同一服务器复制表结构的语句(未测试),但不同服务器的呢?尝试导出表结构:

  因导出工具版本5.6低于数据库版本5.7,无法导出。直接创建:

CREATE TABLE IF NOT EXISTS dms_bb_dealers (
  DEALER_ID DECIMAL(8,0) NOT NULL,
  DEALER_CODE VARCHAR(16), DEALER_NAME VARCHAR(128),
  DEALER_SHORT_NAME VARCHAR(128), DEALER_LEVEL DECIMAL(8,0),
  AUTHORIZED_BCD DECIMAL(8,0),
  JOIN_TIME TIMESTAMP,
  BIZ_STATUS DECIMAL(8,0),
  PROVINCE DECIMAL(8,0),
  CITY DECIMAL(8,0),
  COUNTY DECIMAL(8,0),
  REGISTERED_CAPITAL DECIMAL(12,2),
  MARGIN DECIMAL(10,2),
  INCORPORATOR_MOB VARCHAR(32),
  DLR_REGION_ID DECIMAL(4,0),
  DLR_SECTOR_ID DECIMAL(4,0),
  REVOKE_DATE TIMESTAMP,
  ADDRESS VARCHAR(128),
  CREATED_TIME TIMESTAMP,
  UPDATED_TIME TIMESTAMP,
  PRIMARY KEY (DEALER_ID)
);

等到维护select文件时再建索引。

 

 3、编辑“转换---表输入”

 源表来自DMS连接 

 

4、编辑“输出---插入/更新”

我现在猜测:“提交记录数量”表示流的缓存大小。

现在是全量同步,而非增量同步。

连接输入和输出,保存该转换到一个文件夹(我选择帆软的报表文件夹)

 

5、新建作业,3分钟转换一次,成功执行,日志为:

首次从源表Input 550 条记录到内存,从内存Write 550 到“表输入”;从表输入Input 550到内存, 从内存Output 550到流, 从流里Read 550, Write 550到目标表, Update 0, Error 0 ?

其后从源表Input 550 条记录到内存,从内存Write 550 到“表输入”;从表输入Input 550到内存, 从内存Output 0到流, 从目标表Read 550到内存, 从内存Write 550到目标表, Update 533, Error 0 ?

上面的推测有点混乱;首次我将缓存设置为10000行,所以日志不同,有可能因此。 

【本次使用结束】

 

标签:经销商,转换,dealers,bb,DECIMAL,kettle,550,DMS,内存
来源: https://www.cnblogs.com/EverNote/p/15187795.html