根据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); }