【问题标题】:Teradata: How to add range partition to non empty table?Teradata:如何将范围分区添加到非空表?
【发布时间】:2016-03-09 00:19:54
【问题描述】:

我有这样的桌子:

CREATE SET TABLE ONLINE_BANKING.TRANSACTIONS ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT,
     DEFAULT MERGEBLOCKRATIO
     (
      transaction_id INTEGER NOT NULL,
      date_of_transaction DATE FORMAT 'YYYYMMDD' NOT NULL,
      amount_of_transaction DECIMAL(38,2) NOT NULL,
      transaction_type_code BYTEINT NOT NULL DEFAULT 25 , 
UNIQUE PRIMARY INDEX ( transaction_id );

我想将已填充数据表的分区添加到 date_of_transaction 列。

我试过这样:

ALTER TABLE TRANSACTIONS
MODIFY PRIMARY INDEX (date_of_transaction) -- tried to write different columns, but failed
ADD RANGE BETWEEN DATE '1998-01-01' AND DATE '2015-12-31' EACH INTERVAL '1' MONTH;

但是 Teradata 返回错误:

DROP RANGE/ADD RANGE 子句没有对应的级别是 RANGE_N 函数

这是什么意思,我怎样才能实现目标?

【问题讨论】:

    标签: sql teradata partitioning database-partitioning


    【解决方案1】:

    您不能向未分区的现有表添加分区,但是,您只能从分区表中添加或删除范围。

    唯一的方法是创建一个新表并像这样插入/选择:

    CREATE SET TABLE ONLINE_BANKING.TRANSACTIONS_PPI ,NO FALLBACK ,
         NO BEFORE JOURNAL,
         NO AFTER JOURNAL,
         CHECKSUM = DEFAULT,
         DEFAULT MERGEBLOCKRATIO
         (
          transaction_id INTEGER NOT NULL,
          date_of_transaction DATE FORMAT 'YYYYMMDD' NOT NULL,
          amount_of_transaction DECIMAL(38,2) NOT NULL,
          transaction_type_code BYTEINT NOT NULL DEFAULT 25 , 
          ...)
    PRIMARY INDEX ( transaction_id )
    PARTITION BY
       RANGE_N (date_of_transaction BETWEEN DATE '1998-01-01' AND DATE '2015-12-31' 
       EACH INTERVAL '1' MONTH);
    
    INSERT INTO ONLINE_BANKING.TRANSACTIONS_PPI
    SELECT * FROM ONLINE_BANKING.TRANSACTIONS;
    
    -- when everything is ok
    DROP TABLE ONLINE_BANKING.TRANSACTIONS;
    RENAME TABLE ONLINE_BANKING.TRANSACTIONS_PPI AS ONLINE_BANKING.TRANSACTIONS;
    

    【讨论】:

    • 谢谢你的回答,但我错过了一些东西。 TD 一直说“数据类型 (date_of_transaction) 与定义的类型名称 teradata 不匹配”。怎么了?
    猜你喜欢
    • 2018-08-30
    • 2015-07-27
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    相关资源
    最近更新 更多