Загрузка...

Как выполнить слияние двух дампов sql?

Тема в разделе Backend создана пользователем kosfx 31 мар 2019. 252 просмотра

  1. kosfx
    kosfx Автор темы 31 мар 2019 поддерживаю активность на гитхабе 67 19 янв 2018
    Есть старый дамп и новый. Нужно в новый подлить старый, но только не заливать те строки, если в новом дампе параметр `auth` равен прежнему.
    Короче, это статистика на моих серверах. Пишется Стим ид в отдельную колонку. Надо такой запрос, чтобы при добавлении старого дампа, не заменялись те строки где уже сущетсвует такой стим ид. Пример:
    Новая:
    `id` `value` `steamid` = 1, 2232, STEAM_0:1:000000
    `id` `value` `steamid` = 2, 2543, STEAM_0:1:004230
    `id` `value` `steamid` = 3, 5345, STEAM_0:1:023400
    Старый:
    `id` `value` `steamid` = 1, 2134, STEAM_0:1:000000
    `id` `value` `steamid` = 2, 97, STEAM_0:1:0048989
    `id` `value` `steamid` = 3, 321, STEAM_0:1:02213

    Итог:
    `id` `value` `steamid` = 1, 2232, STEAM_0:1:000000 (из нового)
    `id` `value` `steamid` = 2, 2543, STEAM_0:1:004230 (из нового)
    `id` `value` `steamid` = 3, 5345, STEAM_0:1:023400 (из нового)
    `id` `value` `steamid` = 4, 97, STEAM_0:1:0048989 (старый)
    `id` `value` `steamid` = 5, 321, STEAM_0:1:02213 (старый)

    Из 6 строчек у нас есть равные. Нам надо сохранить строку из нового дампа, удалив из старого. Я не знал как объяснить, потому нарисовал)
     
    31 мар 2019 Изменено
  2. USDC
    Тебе на stackoverflow.com с этой ебалой, но проще не усложнять себе жизнь и сначала импортировать все, а после выполнить
    <?
    $arr = array();
    while($q =
    mysqli_query($db,"select * from TABLE)) {
    if (in_array($arr, $q['steamid'])) {
    mysqli_query($db,"delete from TABLE where id = $q['id']");
    } else {
    array_push($arr, $q['steamid']);
    }
    } echo 'выполнено'; ?>
    Дубликаты по стимайди будут удалены
     
  3. kosfx
    kosfx Автор темы 29 май 2022 поддерживаю активность на гитхабе 67 19 янв 2018
    Если у кого будет подобная проблема, то лучшим решением будет:

    1. Импортировать первый дамп в тестовую базу, а затем экспортировать снова, но на сей раз без колонки id (исключить из экспорта).
    Очистить базу. Залить второй дамп, сделать то же самое
    2. Залить первый, а после второй дамп в production базу.

    Главное - проверьте, что у вас есть autoincrement на колонку id.
    Кратко: мы теперь не затираем строки из-за идентификатора, а добавляем новые в конец
     
    29 май 2022 Изменено
Загрузка...
Top