Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich in Oracle eine Partition aus einer Tabelle in eine andere importieren?

Sie können etwas Ähnliches mit dem Code TABELLE ÄNDERN ... PARTITION AUSTAUSCHEN Befehl. Dies würde eine einzelne Partition mit einer Tabelle austauschen, die die gleiche Struktur hat.

Ein kleines Beispiel:

/* Partitionned Table Creation */
SQL> CREATE TABLE table_a (
  2     ID NUMBER PRIMARY KEY,
  3     DATA VARCHAR2(200)
  4  )
  5  PARTITION BY RANGE (ID) (
  6     PARTITION part100 VALUES LESS THAN (100),
  7     PARTITION part200 VALUES LESS THAN (200)
  8  );

Table created

/* Swap table creation */
SQL> CREATE TABLE swap_table (
  2     ID NUMBER PRIMARY KEY,
  3     DATA VARCHAR2(200)
  4  );

Table created

SQL> INSERT INTO swap_table SELECT ROWNUM, 'a' FROM dual CONNECT BY LEVEL <= 99;

99 rows inserted

SQL> select count(*) from table_a partition (part100);

  COUNT(*)
----------
         0

Dadurch wird die Partition part100 ausgetauscht mit der Übergangstabelle swap_table :

SQL> ALTER TABLE table_a EXCHANGE PARTITION part100 WITH TABLE swap_table;

Table altered

SQL> select count(*) from table_a partition (part100);

  COUNT(*)
----------
        99