Работа с БД

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 18 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    708
    Симпатии:
    225
    Здравствуйте.
    Подскажите пожалуйста, имеем две базы данных. С одинаковыми таблицами по именам и структуре.Как значения из одной БД добавить в другую бд, не заменить, а именно добавить.
     
  2. satih

    satih

    Регистр.:
    19 сен 2008
    Сообщения:
    429
    Симпатии:
    710
    Дамп первой и добавить во вторую. Только после дампа обратить внимание на id или какие другие индексы там есть, можно скриптом изменить.
     
  3. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    708
    Симпатии:
    225
    Разве такое возможно?
    ID'шки не будут ругаться?
    Да, и ещё, как 650МБ дамп загрзить на денвере.
    Супексом пробовал, пишет таймаут 600 сек.
    Хотя в пхп.ини стоит таймаут 3600 сек.
    Через РНРМУАДМИНа тоже таймаут - 300 сек.
    Как быть?
     
  4. Eihwaz

    Eihwaz

    Регистр.:
    7 окт 2007
    Сообщения:
    156
    Симпатии:
    54
    Можно использовать INSERT IGNORE, но проблема таким образом решится не полностью: при совпадении автоинкрементных полей база данных не будет выдавать ошибку (вернее, не будет прерывать операцию — вместо error будет warning), но и не будет добавлять запись. Если совпадений нет, то запись добавится.
    Больше ничем помочь не могу, т.к. когда я столкнулся с такой проблемой одна из баз данных была настолько мала, что не составило труда сделать все средствами PHP.
     
  5. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    воспользуйтесь командной строкой
    Код:
    mysql -u username -p databasename < dumpfilename.sql
    данные подставите свои, после ввода этой строки и нажатия энтера вас попросят ввести пароль для подключения к базе.
    Дампы более 10 метров лучше заливать через командную строку, имхо.
     
  6. tofik228

    tofik228 Читатель

    Заблокирован
    Регистр.:
    3 июн 2008
    Сообщения:
    651
    Симпатии:
    165
    если уж сипексом не удается, то только скорее всего разделить базу на 3-5 частей, вот только прийдется очень долго ждать открытия такого файла.
     
  7. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    708
    Симпатии:
    225
    С сипексом разобрался.
    Заставил его работать.

    Необходимо это сделать без потери информации.
     
  8. Kloster

    Kloster

    Регистр.:
    22 июн 2009
    Сообщения:
    216
    Симпатии:
    12
    тут вариант только один, в одной из баз поменять все id на новые, чтобы не пересекались со второй, а потом перелить. Главное - не потерять целостность таблиц, т.е. менять не только поля сами с id, но и все ссылки на них в других полях-связях.
     
  9. Aquariuscrimea

    Aquariuscrimea Создатель

    Регистр.:
    4 янв 2009
    Сообщения:
    24
    Симпатии:
    0
    согласен, заменить во 2ой базе на новые id.
    Кроме max_execution_time еще надо смотреть в сторону memory limit
     
  10. kvnovikoff

    kvnovikoff Прохожие

    если в таблицах одинаковые записи с разными идентификаторами, то выход только один - выбираешь данные из одной таблицы ищешь их в другой базе, если нет то добавляешь
    выбирать лучше всего не все сразу , а с лимитом 100-200 так памяти меньше требуется.
     
Статус темы:
Закрыта.