pg分区表-多级分区
最后更新:2024-05-16 05:30:01
|
状态:未完成
进口数据多个国别,多个年份,原始结构如下
ID | 年份 | 国别 | 品类 | 金额 |
1 | 2001 | 法国 | 玉米 | 111.00 |
2 | 2002 | 巴西 | 大豆 | 222.00 |
先根据国别分区、再根据年份分区
//主表 Table master = new Table(table); master.setColumns(...); master.setPartitionBy(new Partition(Partition.TYPE.LIST, part_column)); pg.ddl().create(master); //执行SQL:CREATE TABLE IF NOT EXISTS br_data.public.st_import(列定义...) PARTITION BY LIST(from_region_code) //PARTITION BY LIST(from_region_code):下一级根据国别分区 //一级分区(根据国别)(遍历国家) String code= "102"//国别编号 PartitionTable pt1 =new PartitionTable(); pt1.setPartitionBy(new Partition(Partition.TYPE.LIST, "YYYY")); pt1.setMaster(master); pt1.setName(table+"_"+code); pt1.setPartitionFor(new Partition(Partition.TYPE.LIST).addList(code)); pg.ddl().create(pt1); //执行SQL: CREATE TABLE IF NOT EXISTS br_data.public.st_import_102 PARTITION OF br_data.public.st_import FOR VALUES IN(102) PARTITION BY LIST(YYYY) //PARTITION OF br_data.public.st_import :上级表 //FOR VALUES IN(102) :国别编号102的数据保存到当前分区 //PARTITION BY LIST(YYYY) :下一级根据YYYY分区 //二级分区(根据年份)(遍历年份) Table pt2 =new Table(); pt2.setPartitionOf(pt1); //设置上一级 pt2.setName(table+"_"+code+"_"+year); pt2.setPartitionFor(new Partition(Partition.TYPE.LIST).addList(year)); pg.ddl().create(pt2);