一、說明
-
最近做的系統中需要把各種數據庫遷移到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;
}