如何按日期列分区oracle表?

时间:2015-11-19 15:44:38

标签: database oracle date database-partitioning database-scripts

我在oracle中有一个表:

CREATE TABLE transaction (
    id INT NOT NULL,
    accountnumber VARCHAR NOT NULL,
    stmtvaluedate DATE NOT NULL,
    ...
)

我想通过stmtvaluedate列对此表进行分区。我的目标是在一个月过后创建一个新分区。

有没有好的剧本呢?或者我必须创建静态数量的分区?

最好的是:如果一个月过去了,将自动创建一个新分区。

有人可以给我一个关于如何在每个月之后按日期列对表进行分区的示例吗?如果自动分区是不可能的,那么我需要一个例子,该例子从现在起一年内创建一个分区,大约每个月。

谢谢!

1 个答案:

答案 0 :(得分:10)

您想要做的事情是完全可能的。这应该这样做:

awk '
    NR == FNR {input[$0]; next}
    {
        split($5, a, "-")
        if (a[1] in input) {
            key = $4 OFS $5
            n[key]++
            sum[key] += $7
        }
    }
    END {
        for (key in n) 
            printf "%s %.1f\n", key, sum[key]/n[key]
    }
' input file