根据mysql表结构创建pg表并分区

最后更新:2024-09-08 05:30:01 | 状态:未完成
许多项目在初期使用了mysql但后期发现数据量太大需要分区,这时可以用pg内置的分区表
  • 读取mysql表结构
  • 修改差异部分,如catalog,schema等,当然数据类型就不需要手工处理了,可以自动适配
  • 设置分区类型
//检测一下pg中有没有这个表
Table tab = ServiceProxy.service("pg_data").metadata().table(table, false);
if(null != tab){
    ServiceProxy.service("pg_data").ddl().drop(tab);
}
//获取mysql表结构
tab = ServiceProxy.service("mysql_data").metadata().table(table, true);
tab.setSchema((Schema) null);
tab.getColumn("REG_TIME").setDefaultValue("${now()}");
tab.getColumn("UPT_TIME").setDefaultValue(null);
Table master = new Table(table);
master.setColumns(tab.getColumns());
master.setPartition(new Table.Partition(Table.Partition.TYPE.RANGE, part));
master.getColumn("id").setPrimary(false).setType("bigint"); 
ServiceProxy.service("pg_data").ddl().create(master);
long vol = 3000000; //300万每个表
for(long i=0; i<100; i++){
    long fr = i*vol;
    long to = fr + vol;
    PartitionTable pt =new PartitionTable();
    pt.setMaster(master);
    pt.setName(table+"_" + fr + "_" + to);
    pt.setPartition(new Table.Partition(Table.Partition.TYPE.RANGE).setMin(fr).setMax(to));
    ServiceProxy.service("pg_data").ddl().create(pt);
}

首页 最近更新 搜索 提交 回复