kettle7.0數據庫遷移(MySQL遷移到Postgresql,遷移過程中自動創建表結構)


一、說明

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

3.6 數據抽取

3.6.1 新建數據庫表結構

3.6.2 新建數據庫表結構

四、遷移成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM