根据mysql表结构创建pg表并分区
最后更新:2025-07-24 11:08:52
|
状态:未完成
许多项目在初期使用了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);
}