一、说明
-
最近做的系统中需要把各种数据库迁移到Postgresql数据库上,使用kettle来进行数据库迁移。
-
安装完kettle软件,需要将需要的数据库驱动放入在安装包的lib包下。
-
整套流程分为:2个job,4个trans。
二、所需软件
- kettle7.0
- JDK1.8
- mysql-connector-java-5.1.43
三、具体实现
3.1 数据库迁移-主任务
3.2 获取变量-数据同步
3.3 获取全量表名
3.3.1 获取表名
3.3.2 字段选择
3.3.3 复制记录到结果
3.4 获取变量
3.4.1 从结果获取记录
3.4.2 设置变量
3.5 新建数据库表结构
3.5.1 获取表名
3.5.2 新建数据库表结构
-
根据不同的数据库设置建表语句
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException{
// First, get a row from the default input hop
Object[] r = getRow();
//本地连接
org.pentaho.di.core.database.DatabaseMeta dbmeta = getTransMeta().findDatabase("kettle_postgres");
if(dbmeta!=null)
{
org.pentaho.di.core.database.Database db=new org.pentaho.di.core.database.Database(dbmeta);
try
{
db.connect();
String tablename = getVariable("TABLENAME");
logBasic("开始创建表:" + tablename);
if(tablename!=null && tablename.trim().length()>0)
{
String sql = db.getDDLCreationTable(tablename, data.inputRowMeta);//${TABLENAME}
sql = sql.replace("TABLE", "TABLE public.");
db.execStatement(sql.replace(";", ""));
logBasic(sql);
}
}
catch(Exception e)
{
logError("创建表出现异常",e);
}finally{
db.disconnect();
}
}
return false;
}