PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Attachez la partition LIST à la table existante dans postgres 11

Citation du manuel

Ainsi, vous ne pouvez pas modifier une table non partitionnée existante en une table partitionnée.

Vous devez créer une nouvelle table (avec un nom différent) partitionnée, créer toutes les partitions nécessaires, puis copier les données de l'ancienne table vers la nouvelle table partitionnée.

Quelque chose comme :

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

Créez ensuite les partitions :

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);

Copiez ensuite les données :

insert into clients_partitioned
select *
from clients;

Une fois cela fait, vous pouvez supprimer l'ancienne table et renommer la nouvelle :

drop table clients;
alter table clients_partitioned rename to clients;

N'oubliez pas de recréer vos clés étrangères et vos index.