PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Hängen Sie die Partition LIST an die vorhandene Tabelle in Postgres 11 an

Zitat aus dem Handbuch

Daher können Sie eine vorhandene nicht partitionierte Tabelle nicht in eine partitionierte Tabelle ändern.

Sie müssen eine neue partitionierte Tabelle (mit einem anderen Namen) erstellen, alle erforderlichen Partitionen erstellen und dann die Daten aus der alten Tabelle in die neue, partitionierte Tabelle kopieren.

Etwas wie:

create table clients_partitioned
(
  .... all columns ...
)
PARTITION BY LIST  (client_id);

Erstellen Sie dann die Partitionen:

create table clients_1 
   partition of clients_partioned
   values in (1,2,3);

create table clients_1 
   partition of clients_partioned
   values in (4,5,6);

Kopieren Sie dann die Daten:

insert into clients_partitioned
select *
from clients;

Danach können Sie die alte Tabelle löschen und die neue Tabelle umbenennen:

drop table clients;
alter table clients_partitioned rename to clients;

Vergessen Sie nicht, Ihre Fremdschlüssel und Indizes neu zu erstellen.