DilyaraL

Скрипт для удаления дубликатов new insert

Jun 26th, 2024
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.79 KB | None | 0 0
  1. BEGIN;
  2.  
  3. -- Шаг 1: Найти все дублирующиеся email, игнорируя регистр
  4. WITH DuplicateEmails AS (
  5. SELECT LOWER(email) AS email, MIN(id::text)::UUID AS main_id, ARRAY_AGG(id::UUID) AS duplicate_ids
  6. FROM "user"
  7. GROUP BY LOWER(email)
  8. HAVING COUNT(*) > 1
  9. ),
  10. Migrations AS (
  11. SELECT email, main_id, UNNEST(array_remove(duplicate_ids, main_id)) AS duplicate_id
  12. FROM DuplicateEmails -- исключить основной аккаунт из дубликатов
  13. )
  14. -- Шаг 2: Перенос всех связанных записей к основному аккаунту
  15. -- Вставка новых записей с main_id, пропуская конфликты
  16. INSERT INTO media (user_id, other_column)
  17. SELECT m.main_id, media.other_column
  18. FROM media
  19. JOIN Migrations m ON media.user_id = m.duplicate_id
  20. ON CONFLICT DO NOTHING;
  21.  
  22. -- Вставка новых записей с main_id, пропуская конфликты
  23. INSERT INTO subscription (user_id, other_column)
  24. SELECT m.main_id, subscription.other_column
  25. FROM subscription
  26. JOIN Migrations m ON subscription.user_id = m.duplicate_id
  27. ON CONFLICT DO NOTHING;
  28.  
  29. -- Вставка новых записей с main_id, пропуская конфликты
  30. INSERT INTO message (user_id, other_column)
  31. SELECT m.main_id, message.other_column
  32. FROM message
  33. JOIN Migrations m ON message.user_id = m.duplicate_id
  34. ON CONFLICT DO NOTHING;
  35.  
  36. -- Вставка новых записей с main_id, пропуская конфликты
  37. INSERT INTO message_reaction (user_id, other_column)
  38. SELECT m.main_id, message_reaction.other_column
  39. FROM message_reaction
  40. JOIN Migrations m ON message_reaction.user_id = m.duplicate_id
  41. ON CONFLICT DO NOTHING;
  42.  
  43. -- Вставка новых записей с main_id, пропуская конфликты
  44. INSERT INTO chat_member (user_id, other_column)
  45. SELECT m.main_id, chat_member.other_column
  46. FROM chat_member
  47. JOIN Migrations m ON chat_member.user_id = m.duplicate_id
  48. ON CONFLICT DO NOTHING;
  49.  
  50. -- Вставка новых записей с main_id, пропуская конфликты
  51. INSERT INTO user_chat_group (user_id, other_column)
  52. SELECT m.main_id, user_chat_group.other_column
  53. FROM user_chat_group
  54. JOIN Migrations m ON user_chat_group.user_id = m.duplicate_id
  55. ON CONFLICT DO NOTHING;
  56.  
  57. -- Вставка новых записей с main_id, пропуская конфликты
  58. INSERT INTO chat_message_read (user_id, other_column)
  59. SELECT m.main_id, chat_message_read.other_column
  60. FROM chat_message_read
  61. JOIN Migrations m ON chat_message_read.user_id = m.duplicate_id
  62. ON CONFLICT DO NOTHING;
  63.  
  64. -- Вставка новых записей с main_id, пропуская конфликты
  65. INSERT INTO chat_message_report (user_id, other_column)
  66. SELECT m.main_id, chat_message_report.other_column
  67. FROM chat_message_report
  68. JOIN Migrations m ON chat_message_report.user_id = m.duplicate_id
  69. ON CONFLICT DO NOTHING;
  70.  
  71. -- Вставка новых записей с main_id, пропуская конфликты
  72. INSERT INTO community_member (user_id, other_column)
  73. SELECT m.main_id, community_member.other_column
  74. FROM community_member
  75. JOIN Migrations m ON community_member.user_id = m.duplicate_id
  76. ON CONFLICT DO NOTHING;
  77.  
  78. -- Вставка новых записей с main_id, пропуская конфликты
  79. INSERT INTO community_request (user_id, other_column)
  80. SELECT m.main_id, community_request.other_column
  81. FROM community_request
  82. JOIN Migrations m ON community_request.user_id = m.duplicate_id
  83. ON CONFLICT DO NOTHING;
  84.  
  85. -- Вставка новых записей с main_id, пропуская конфликты
  86. INSERT INTO community_invite (user_id, other_column)
  87. SELECT m.main_id, community_invite.other_column
  88. FROM community_invite
  89. JOIN Migrations m ON community_invite.user_id = m.duplicate_id
  90. ON CONFLICT DO NOTHING;
  91.  
  92. -- Вставка новых записей с main_id, пропуская конфликты
  93. INSERT INTO publication (author_id, other_column)
  94. SELECT m.main_id, publication.other_column
  95. FROM publication
  96. JOIN Migrations m ON publication.author_id = m.duplicate_id
  97. ON CONFLICT DO NOTHING;
  98.  
  99. -- Вставка новых записей с main_id, пропуская конфликты
  100. INSERT INTO publication_reaction (user_id, other_column)
  101. SELECT m.main_id, publication_reaction.other_column
  102. FROM publication_reaction
  103. JOIN Migrations m ON publication_reaction.user_id = m.duplicate_id
  104. ON CONFLICT DO NOTHING;
  105.  
  106. -- Вставка новых записей с main_id, пропуская конфликты
  107. INSERT INTO user_order (user_id, other_column)
  108. SELECT m.main_id, user_order.other_column
  109. FROM user_order
  110. JOIN Migrations m ON user_order.user_id = m.duplicate_id
  111. ON CONFLICT DO NOTHING;
  112.  
  113. -- Вставка новых записей с main_id, пропуская конфликты
  114. INSERT INTO purchase (user_id, other_column)
  115. SELECT m.main_id, purchase.other_column
  116. FROM purchase
  117. JOIN Migrations m ON purchase.user_id = m.duplicate_id
  118. ON CONFLICT DO NOTHING;
  119.  
  120. -- Вставка новых записей с main_id, пропуская конфликты
  121. INSERT INTO user_favorite_poster (user_id, other_column)
  122. SELECT m.main_id, user_favorite_poster.other_column
  123. FROM user_favorite_poster
  124. JOIN Migrations m ON user_favorite_poster.user_id = m.duplicate_id
  125. ON CONFLICT DO NOTHING;
  126.  
  127. -- Вставка новых записей с main_id, пропуская конфликты
  128. INSERT INTO topic (user_id, other_column)
  129. SELECT m.main_id, topic.other_column
  130. FROM topic
  131. JOIN Migrations m ON topic.user_id = m.duplicate_id
  132. ON CONFLICT DO NOTHING;
  133.  
  134. -- Вставка новых записей с main_id, пропуская конфликты
  135. INSERT INTO user_activity (user_id, other_column)
  136. SELECT m.main_id, user_activity.other_column
  137. FROM user_activity
  138. JOIN Migrations m ON user_activity.user_id = m.duplicate_id
  139. ON CONFLICT DO NOTHING;
  140.  
  141. -- Вставка новых записей с main_id, пропуская конфликты
  142. INSERT INTO user_offer (user_id, other_column)
  143. SELECT m.main_id, user_offer.other_column
  144. FROM user_offer
  145. JOIN Migrations m ON user_offer.user_id = m.duplicate_id
  146. ON CONFLICT DO NOTHING;
  147.  
  148. -- Вставка новых записей с main_id, пропуская конфликты
  149. INSERT INTO trajectory (user_id, other_column)
  150. SELECT m.main_id, trajectory.other_column
  151. FROM trajectory
  152. JOIN Migrations m ON trajectory.user_id = m.duplicate_id
  153. ON CONFLICT DO NOTHING;
  154.  
  155. -- Вставка новых записей с main_id, пропуская конфликты
  156. INSERT INTO trajectory_offer (user_id, other_column)
  157. SELECT m.main_id, trajectory_offer.other_column
  158. FROM trajectory_offer
  159. JOIN Migrations m ON trajectory_offer.user_id = m.duplicate_id
  160. ON CONFLICT DO NOTHING;
  161.  
  162. COMMIT;
  163.  
Advertisement
Add Comment
Please, Sign In to add comment