@kiak0n0v

Нужно сделать INSERT из SELECT, но присутствует индекс, который не позволяет это сделать, как сделать?

У меня есть две таблицы в Posrgresql, в одной много уникальных строк. Мне нужно вставить их в другую таблицу с учетом слов для фильтров. Основная проблема заключается в том, что делая команду
INSERT INTO messages (sender_first_name, sender_id, sender_username, message_id, message_text, chat_title, chat_id, chat_username, parser_first_name, parser_id, parser_username, parser_phone_number, got_time) SELECT sender_first_name, sender_id, sender_username, message_id, message_text, chat_title, chat_id, chat_username, parser_first_name, parser_id, parser_username, parser_phone_number, got_time FROM allmessages WHERE message_text LIKE '%ищу менеджер%' OR message_text LIKE '%ищу помощник%' OR message_text LIKE '%ищу специалист%' OR message_text LIKE '%нужен менеджер%' OR message_text LIKE '%нужен помощник%' OR message_text LIKE '%нужен специалист%' OR message_text LIKE '%Ищу менеджер%' OR message_text LIKE '%Ищу помощник%' OR message_text LIKE '%Ищу специалист%' OR message_text LIKE '%Нужен менеджер%' OR message_text LIKE '%Нужен помощник%' OR message_text LIKE '%Нужен специалист%';

Мне выдает ошибку:
duplicate key value violates unique constraint "messages_message_id_idx"
DETAIL:  Key (message_id, chat_id)=(350161, -1001334961182) already exists.


Как вставлять все значения, чтобы не было этой ошибки?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
@DBalashov
INSERT INTO messages (sender_first_name, sender_id, sender_username, message_id, message_text, chat_title, chat_id, chat_username, parser_first_name, parser_id, parser_username, parser_phone_number, got_time) SELECT sender_first_name, sender_id, sender_username, message_id, message_text, chat_title, chat_id, chat_username, parser_first_name, parser_id, parser_username, parser_phone_number, got_time FROM allmessages WHERE message_text LIKE '%ищу менеджер%' OR message_text LIKE '%ищу помощник%' OR message_text LIKE '%ищу специалист%' OR message_text LIKE '%нужен менеджер%' OR message_text LIKE '%нужен помощник%' OR message_text LIKE '%нужен специалист%' OR message_text LIKE '%Ищу менеджер%' OR message_text LIKE '%Ищу помощник%' OR message_text LIKE '%Ищу специалист%' OR message_text LIKE '%Нужен менеджер%' OR message_text LIKE '%Нужен помощник%' OR message_text LIKE '%Нужен специалист%'
on conflict do update
set sender_first_name=allmessages.sender_first_name, ...


ну или

on conflict do nothing
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы