pg分区表-多级分区

最后更新:2023-11-15 05:30:53 | 状态:未完成
进口数据多个国别,多个年份,原始结构如下
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);

最近更新 搜索 提交