Как разделить таблицу postgres с помощью промежуточной таблицы

Я использую postgres 10 дБ.

У меня есть таблица клиентов, состоящая из следующих столбцов

custid (primary key),
name,
phonenumber,
email,
dateofbirth,
address,
city,
country,
status(boolean)
Join_Date(Date)

У меня есть миллион записей в таблице. Я хочу разделить таблицу на основе разных месяцев (январь 2018 года, один раздел, февраль 2018 года, один раздел и т. д.) с помощью Join_Date и с помощью промежуточной таблицы.

Я также хочу написать автоматический скрипт, чтобы в конце месяца таблица должна была создать еще один раздел прошлого месяца.


person Ratan Uday Kumar    schedule 09.08.2018    source источник
comment
так что на самом деле вы хотите сделать   -  person Fahmi    schedule 09.08.2018
comment
я хочу разделить таблицу клиентов с помощью промежуточной (временной) таблицы   -  person Ratan Uday Kumar    schedule 09.08.2018
comment
например, январь 2018 г., один раздел, февраль 2018 г., один раздел   -  person Ratan Uday Kumar    schedule 09.08.2018
comment
это физический раздел или логический?   -  person Fahmi    schedule 09.08.2018
comment
логический раздел   -  person Ratan Uday Kumar    schedule 09.08.2018
comment
какие данные будут в вашей промежуточной таблице, дайте структуру   -  person Fahmi    schedule 09.08.2018
comment
означает, что нужно получить данные января 2018 года в промежуточной таблице, а затем разбить таблицу для января 2018 года с использованием промежуточной таблицы, затем очистить промежуточную таблицу и затем получить данные февраля в промежуточной таблице, а затем разбить данные февраля 2018 года ... и так далее   -  person Ratan Uday Kumar    schedule 09.08.2018
comment
хорошо, понял, значит, это будет то же самое, что и таблица клиентов, верно?   -  person Fahmi    schedule 09.08.2018
comment
да ты прав   -  person Ratan Uday Kumar    schedule 09.08.2018
comment
и я хочу написать автоматический скрипт или функцию для выполнения в конце месяца и создать раздел для данных за последний месяц   -  person Ratan Uday Kumar    schedule 09.08.2018
comment
я сослался на этот blog.heroku.com/, но не получил ясности   -  person Ratan Uday Kumar    schedule 09.08.2018
comment
проверьте мой ответ и дайте мне знать, если вы понимаете решения   -  person Fahmi    schedule 09.08.2018


Ответы (2)


Попробуйте этот метод:

  1. Прежде всего, создайте дополнительный столбец в таблице клиентов, так как вы хотите логически разделить.
  2. Затем обновите эти столбцы, используя клиентскую и промежуточную таблицы.
  3. После обновления обрежьте вашу таблицу

Для каждого месяца вы можете запускать этот скрипт, и это даст вам логическое разделение.

update customer set partition_column=to_char(Join_Date, 'YYYY-MM')
join intermediate_table on intermediate_table.custid=customer.custid
and  intermediate_table.Join_Date=customer.Join_Date

truncate table intermediate_table
person Fahmi    schedule 09.08.2018
comment
не могли бы вы уточнить свой ответ, потому что я очень новичок в postgres - person Ratan Uday Kumar; 09.08.2018
comment
это применимо для всей базы данных, не особенно для postgres - person Fahmi; 09.08.2018

В документации Postgres есть пример вашей проблемы.

PostgreSQL: Документация: 10: 5.10. Разделение таблицы

person Chocolord    schedule 09.08.2018