Загрузка...

How to merge two sql dumps?

Thread in Backend created by kosfx Mar 31, 2019. 263 views

  1. kosfx
    kosfx Topic starter Mar 31, 2019 поддерживаю активность на гитхабе 67 Jan 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 строчек у нас есть равные. Нам надо сохранить строку из нового дампа, удалив из старого. Я не знал как объяснить, потому нарисовал)
     
  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 Topic starter May 29, 2022 поддерживаю активность на гитхабе 67 Jan 19, 2018
    Если у кого будет подобная проблема, то лучшим решением будет:

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

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