免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6213 | 回复: 6
打印 上一主题 下一主题

[高手帮忙][江湖救急] Oracle 分区表中LESS THAN 怎么迁移到 postgresql8.4 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-01 14:35 |只看该作者 |倒序浏览
下面这个是Oracle 上的源表,partition 部分不知道怎么迁移到postgresql ,请教下。谢谢!



  CREATE TABLE AIOSS.BMS_FEE_SUM

   ( SERIALNO VARCHAR(17) NOT NULL,

  OFFICE_ID VARCHAR(10) NOT NULL,

COUNTY_ID VARCHAR(3) NOT NULL,

REGION_ID VARCHAR(1) NOT NULL,

CLOSE_BALANCE_TIME DATE,

SERVICE_KEY VARCHAR(30)

   )

  PARTITION BY RANGE (REGION_ID)

(

PARTITION APART  VALUES LESS THAN ('B')

PARTITION BPART  VALUES LESS THAN ('C')

PARTITION CPART  VALUES LESS THAN ('D')

PARTITION DPART  VALUES LESS THAN ('E')

PARTITION EPART  VALUES LESS THAN ('F')

PARTITION ZPART  VALUES LESS THAN (MAXVALUE)

);

论坛徽章:
0
2 [报告]
发表于 2011-03-02 15:06 |只看该作者
顶下,知道的大侠,帮个忙吧..

论坛徽章:
0
3 [报告]
发表于 2011-03-02 20:34 |只看该作者
一位高手说了,PG的分区表可能性能不行,这个问题需要好好考虑。

论坛徽章:
4
丑牛
日期:2014-09-15 09:28:12双子座
日期:2014-12-19 17:01:192015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2016-06-28 06:20:00
4 [报告]
发表于 2011-03-03 18:20 |只看该作者
表大不?如果不大,直接插入数据到PG,就不要用分区了。

论坛徽章:
3
数据库技术版块每日发帖之星
日期:2015-06-18 22:20:00数据库技术版块每日发帖之星
日期:2015-06-21 22:20:00数据库技术版块每日发帖之星
日期:2015-08-27 06:20:00
5 [报告]
发表于 2011-04-10 22:44 |只看该作者
本帖最后由 osdba 于 2011-04-11 14:08 编辑

建分区表的语句如下:
CREATE TABLE BMS_FEE_SUM
( SERIALNO VARCHAR(17) NOT NULL,
  OFFICE_ID VARCHAR(10) NOT NULL,
COUNTY_ID VARCHAR(3) NOT NULL,
REGION_ID VARCHAR(1) NOT NULL,
CLOSE_BALANCE_TIME DATE,
SERVICE_KEY VARCHAR(30)
);

--注意建分区表,要加check,这样保证select * from bms_fee_sum where region_id='A'这样的语句只扫描特定的分区,而不会扫描所有的分区
create table bms_fee_sum_b() inherits(bms_fee_sum);
alter table bms_fee_sum_b add check(region_id<'B');

create table bms_fee_sum_c() inherits(bms_fee_sum);
alter table bms_fee_sum_c add check(region_id>='B' and region_id<'C');

create table bms_fee_sum_d() inherits(bms_fee_sum);
alter table bms_fee_sum_d add check(region_id>='C' and region_id<'D');

create table bms_fee_sum_e() inherits(bms_fee_sum);
alter table bms_fee_sum_e add check(region_id>='D' and region_id<'E');

create table bms_fee_sum_f() inherits(bms_fee_sum);
alter table bms_fee_sum_f add check(region_id>='E' and region_id<'F');

create table bms_fee_sum_max() inherits(bms_fee_sum);
alter table bms_fee_sum_max add check(region_id>='F');

CREATE RULE bms_fee_sum_insert_b AS
ON INSERT TO bms_fee_sum  WHERE ( REGION_ID <'B')
  DO INSTEAD  INSERT INTO bms_fee_sum_b VALUES ( NEW.* );

CREATE RULE bms_fee_sum_insert_c AS
ON INSERT TO bms_fee_sum  WHERE ( REGION_ID >='B' and  REGION_ID <'C')
  DO INSTEAD  INSERT INTO bms_fee_sum_c VALUES ( NEW.* );

CREATE RULE bms_fee_sum_insert_d AS
ON INSERT TO bms_fee_sum  WHERE ( REGION_ID >='C' and REGION_ID <'D')
  DO INSTEAD  INSERT INTO bms_fee_sum_d VALUES ( NEW.* );

CREATE RULE bms_fee_sum_insert_e AS
ON INSERT TO bms_fee_sum  WHERE ( REGION_ID >='D' and REGION_ID <'E')
  DO INSTEAD  INSERT INTO bms_fee_sum_e VALUES ( NEW.* );

CREATE RULE bms_fee_sum_insert_f AS
ON INSERT TO bms_fee_sum  WHERE ( REGION_ID >='E' and REGION_ID <'F')
  DO INSTEAD  INSERT INTO bms_fee_sum_f VALUES ( NEW.* );

CREATE RULE bms_fee_sum_insert_max AS
ON INSERT TO bms_fee_sum  WHERE ( REGION_ID >='F')
  DO INSTEAD  INSERT INTO bms_fee_sum_max VALUES ( NEW.* );

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
6 [报告]
发表于 2011-05-03 09:37 |只看该作者
为什么不反过来。我基本没用过分区表啊。

论坛徽章:
0
7 [报告]
发表于 2011-05-08 11:53 |只看该作者
PostgreSQL没有分区表的概念,它是用表继承来间接实现分区表的。查询的时候可以通过查询父表来实现对特定子表的查询。不过继承表有一个不太方便的地方。就是如果你需要建立索引,你需要对所有子表都建立,只在父表上建立是没有效果的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP