sql >> Databasteknik >  >> RDS >> PostgreSQL

Fäst partitionslistan till befintlig tabell i postgres 11

Citat från manualen

Så du kan inte ändra en befintlig icke-partitionerad tabell till en partitionerad tabell.

Du måste skapa en ny tabell (med ett annat namn) som är partitionerad, skapa alla nödvändiga partitioner och sedan kopiera data från den gamla tabellen till den nya, partitionerade tabellen.

Något i stil med:

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

Skapa sedan partitionerna:

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

Kopiera sedan data:

insert into clients_partitioned
select *
from clients;

När det är gjort kan du släppa den gamla tabellen och byta namn på den nya tabellen:

drop table clients;
alter table clients_partitioned rename to clients;

Glöm inte att återskapa dina främmande nycklar och index.



  1. MySQL-schemanamn med bindestreck tillåter mig inte att utföra kommandoradsfråga

  2. MySql och Entity Framework Code först

  3. Postgres:Begränsning med endast kryss på INSERT

  4. Oracle -- MED KLAUSUL => SLUT? (Syntaxfel, )