PostgreSQL: есть ли способ вставить мои данные по частям в пустую таблицу, чтобы сократить время загрузки? - PullRequest
0 голосов
/ 06 ноября 2019

У меня очень простой запрос следующим образом.

drop table if exists table1;
create table table1
  select
    account,
    campaign_id,
    customer_id,
    type,
    min(date) as date_min
  from table2
  where account in ('1','2') and campaign_id not in ('1','2','3')
  group by account, campaign_id,customer_id,type;

Однако, каждый раз, когда я запускаю это, я получаю это сообщение об ошибке, говорящее, что «java.io.IOException: соединение закрыто удаленным хостом». Я считаю, что это потому, что данные слишком велики.

Кто-то предложил мне зациклить операторы «вставлять в» и добавлять данные по частям в пустую таблицу.

Итак, я пытался добавлять данные год за годом. Код ниже только на 1 год. Мне нужно вставить в несколько раз.

insert into loop_dk (account, campaign_id, customer_id, type, date_min)
select account,
       campaign_id,
       customer_id,
       type,
       min(date) as date_min
from dk
where account in ('1', '2')
  and campaign_id not in ('1', '2', '3') and date between '2016-11-29' and '2017-11-29'
group by account, campaign_id, customer_id, type;

Может кто-нибудь сказать мне, если это хорошо, чтобы циклически вставить операторы «вставить в» или предложить мне другие решения, которые могут предотвратить вышеупомянутое сообщение об ошибке?

Большое спасибо за вашу помощь!

...