日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

交換分區

PolarDB PostgreSQL版(兼容Oracle)支持交換兩個分區或者子分區的內容。本文詳細介紹了其語法及示例。

語法說明

交換分區

ALTER TABLE <target_table>
  EXCHANGE PARTITION <target_partition>
  WITH TABLE <source_table>
  [(INCLUDING | EXCLUDING) INDEXES]
  [(WITH | WITHOUT) VALIDATION];

交換子分區

ALTER TABLE <target_table>
  EXCHANGE SUBPARTITION <target_subpartition>
  WITH TABLE <source_table>
  [(INCLUDING | EXCLUDING) INDEXES]
  [(WITH | WITHOUT) VALIDATION];
  • ALTER TABLE…EXCHANGE PARTITION命令將現有表與分區交換。 如果您計劃向分區表添加大量數據,可以使用ALTER TABLE…EXCHANGE PARTITION命令來實現批量加載。 您還可以使用ALTER TABLE…EXCHANGE PARTITION命令刪除舊的或不需要的數據進行存儲。

  • ALTER TABLE…EXCHANGE PARTITION命令執行完成時,原來位于target_partition中的數據將交換至source_table中,原來位于source_table中的數據將交換至target_partition中。

  • ALTER TABLE…EXCHANGE PARTITION命令可以交換LIST、RANGEHASH分區表中的分區。 source_table的結構必須與target_table的結構匹配(兩個表必須具有匹配的列和數據類型),并且表中包含的數據必須遵守分區約束。

  • 如果使用EXCHANGE PARTITION指定INCLUDING INDEXES子句,則將交換target_partitionsource_table中的匹配索引。 target_partition中與source_table中不匹配的索引將被重建,反之亦然(即source_table中與target_partition中不匹配的索引也會被重建)。

  • 如果使用EXCHANGE PARTITION指定EXCLUDING INDEXES子句,則將交換target_partitionsource_table中匹配的索引,但source_table中與target_partition中不匹配的索引將被標記為無效,反之亦然(即target_partition中與source_table中不匹配的索引也被標記為無效)。

  • 使用的匹配索引項是指具有相同屬性的索引。例如,由CREATE INDEX命令確定的排序順序、升序/降序方向、空值在前/空值在后的排序等。

  • 如果INCLUDING INDEXESEXCLUDING INDEXES都被省略,則默認操作是EXCLUDING INDEXES行為。

  • 與上面描述相同的行為適用于與EXCHANGE SUBPARTITION子句一起使用的target_subpartition

  • 您必須擁有一個表才能對該表調用ALTER TABLE...EXCHANGE PARTITIONALTER TABLE...EXCHANGE SUBPARTITION命令。

示例

CREATE TABLE sales
(
  dept_no     number,
  part_no     varchar2,
  country     varchar2(20),
  date        date,
  amount      number
)
PARTITION BY LIST(country)
(
  PARTITION europe VALUES('FRANCE', 'ITALY'),
  PARTITION asia VALUES('INDIA', 'PAKISTAN'),
  PARTITION americas VALUES('US', 'CANADA')
);

INSERT INTO sales VALUES
  (40, '9519b', 'US', '12-Apr-2012', '145000'),
  (10, '4519b', 'FRANCE', '17-Jan-2012', '45000'),
  (20, '3788a', 'INDIA', '01-Mar-2012', '75000'),
  (20, '3788a', 'PAKISTAN', '04-Jun-2012', '37500'),
  (10, '9519b', 'ITALY', '07-Jul-2012', '15000'),
  (10, '9519a', 'FRANCE', '18-Aug-2012', '650000'),
  (10, '9519b', 'FRANCE', '18-Aug-2012', '650000'),
  (20, '3788b', 'INDIA', '21-Sept-2012', '5090'),
  (20, '4519a', 'INDIA', '18-Oct-2012', '650000'),
  (20, '4519b', 'INDIA', '2-Dec-2012', '5090');

CREATE TABLE n_america
(
  dept_no     number,
  part_no     varchar2,
  country     varchar2(20),
  date        date,
  amount      number
);

INSERT INTO n_america VALUES
  (40, '9519b', 'US', '12-Apr-2012', '145000'),
  (40, '4577b', 'US', '11-Nov-2012', '25000'),
  (30, '7588b', 'CANADA', '14-Dec-2012', '50000'),
  (30, '9519b', 'CANADA', '01-Feb-2012', '75000'),
  (30, '4519b', 'CANADA', '08-Apr-2012', '120000'),
  (40, '3788a', 'US', '12-May-2012', '4950'),
  (40, '4788a', 'US', '23-Sept-2012', '4950'),
  (40, '4788b', 'US', '09-Oct-2012', '15000');

ALTER TABLE sales
  EXCHANGE PARTITION americas
  WITH TABLE n_america;