A tiny Migration script

import groovy.sql.Sql

class Migration {         
    static getSqlInstance(String orig_or_dest) {
        Sql.newInstance(
            "jdbc:oracle:thin:@asapp:1521:appdb",
            orig_or_dest == 'orig' ? "usr1" : 'usr2',
            orig_or_dest == 'orig' ? "pwd1" : 'pwd2',
            "oracle.jdbc.driver.OracleDriver")
    }

    static migrateChargeItems() {
        def dataset = []
        getSqlInstance('orig').eachRow("select * from A_CHARGETREE"){ row ->
            dataset << [row.id, row.name, row.description, row.parentId, row.leaf]
        }
        dataset.each{item ->
            getSqlInstance('dest').execute("insert into CHARGE_ITEM (id, name, description, parent_id, leaf, version, deleted) values (${item[0]}, ${item[1]}, ${item[2]}, ${item[3]}, ${item[4]?:0}, 1, 0)")
        }
    }

    static migrateProjects() {
        def dataset = []
        getSqlInstance('orig').eachRow("select * from A_PROJECT"){ row ->
            dataset << [row.id, row.name, row.description]
        }
        dataset.each{item ->
            getSqlInstance('dest').execute("insert into PROJECT (id, name, description, version, deleted) values (${item[0]}, ${item[1]}, ${item[2]?:item[1]}, 1, 0)")
        }
    }

    static void main(String[] args) {
        Migration.class.classLoader.rootLoader.addURL( new URL("file:///d:/workspace/timesheet-migration/lib/ojdbc6.jar") )

        migrateChargeItems()
        migrateProjects()
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值