Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BEGIN;
- -- Шаг 1: Найти все дублирующиеся email, игнорируя регистр
- WITH DuplicateEmails AS (
- SELECT LOWER(email) AS email, MIN(id::text)::UUID AS main_id, ARRAY_AGG(id::UUID) AS duplicate_ids
- FROM "user"
- GROUP BY LOWER(email)
- HAVING COUNT(*) > 1
- ),
- Migrations AS (
- SELECT email, main_id, UNNEST(array_remove(duplicate_ids, main_id)) AS duplicate_id
- FROM DuplicateEmails -- исключить основной аккаунт из дубликатов
- )
- -- Шаг 2: Перенос всех связанных записей к основному аккаунту
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO media (user_id, other_column)
- SELECT m.main_id, media.other_column
- FROM media
- JOIN Migrations m ON media.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO subscription (user_id, other_column)
- SELECT m.main_id, subscription.other_column
- FROM subscription
- JOIN Migrations m ON subscription.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO message (user_id, other_column)
- SELECT m.main_id, message.other_column
- FROM message
- JOIN Migrations m ON message.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO message_reaction (user_id, other_column)
- SELECT m.main_id, message_reaction.other_column
- FROM message_reaction
- JOIN Migrations m ON message_reaction.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO chat_member (user_id, other_column)
- SELECT m.main_id, chat_member.other_column
- FROM chat_member
- JOIN Migrations m ON chat_member.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO user_chat_group (user_id, other_column)
- SELECT m.main_id, user_chat_group.other_column
- FROM user_chat_group
- JOIN Migrations m ON user_chat_group.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO chat_message_read (user_id, other_column)
- SELECT m.main_id, chat_message_read.other_column
- FROM chat_message_read
- JOIN Migrations m ON chat_message_read.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO chat_message_report (user_id, other_column)
- SELECT m.main_id, chat_message_report.other_column
- FROM chat_message_report
- JOIN Migrations m ON chat_message_report.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO community_member (user_id, other_column)
- SELECT m.main_id, community_member.other_column
- FROM community_member
- JOIN Migrations m ON community_member.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO community_request (user_id, other_column)
- SELECT m.main_id, community_request.other_column
- FROM community_request
- JOIN Migrations m ON community_request.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO community_invite (user_id, other_column)
- SELECT m.main_id, community_invite.other_column
- FROM community_invite
- JOIN Migrations m ON community_invite.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO publication (author_id, other_column)
- SELECT m.main_id, publication.other_column
- FROM publication
- JOIN Migrations m ON publication.author_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO publication_reaction (user_id, other_column)
- SELECT m.main_id, publication_reaction.other_column
- FROM publication_reaction
- JOIN Migrations m ON publication_reaction.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO user_order (user_id, other_column)
- SELECT m.main_id, user_order.other_column
- FROM user_order
- JOIN Migrations m ON user_order.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO purchase (user_id, other_column)
- SELECT m.main_id, purchase.other_column
- FROM purchase
- JOIN Migrations m ON purchase.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO user_favorite_poster (user_id, other_column)
- SELECT m.main_id, user_favorite_poster.other_column
- FROM user_favorite_poster
- JOIN Migrations m ON user_favorite_poster.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO topic (user_id, other_column)
- SELECT m.main_id, topic.other_column
- FROM topic
- JOIN Migrations m ON topic.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO user_activity (user_id, other_column)
- SELECT m.main_id, user_activity.other_column
- FROM user_activity
- JOIN Migrations m ON user_activity.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO user_offer (user_id, other_column)
- SELECT m.main_id, user_offer.other_column
- FROM user_offer
- JOIN Migrations m ON user_offer.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO trajectory (user_id, other_column)
- SELECT m.main_id, trajectory.other_column
- FROM trajectory
- JOIN Migrations m ON trajectory.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- -- Вставка новых записей с main_id, пропуская конфликты
- INSERT INTO trajectory_offer (user_id, other_column)
- SELECT m.main_id, trajectory_offer.other_column
- FROM trajectory_offer
- JOIN Migrations m ON trajectory_offer.user_id = m.duplicate_id
- ON CONFLICT DO NOTHING;
- COMMIT;
Advertisement
Add Comment
Please, Sign In to add comment