Работа с БД

Статус
В этой теме нельзя размещать новые ответы.

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Подскажите пожалуйста, имеем две базы данных. С одинаковыми таблицами по именам и структуре.Как значения из одной БД добавить в другую бд, не заменить, а именно добавить.
 
Дамп первой и добавить во вторую. Только после дампа обратить внимание на id или какие другие индексы там есть, можно скриптом изменить.
 
Дамп первой и добавить во вторую
Разве такое возможно?
ID'шки не будут ругаться?
Да, и ещё, как 650МБ дамп загрзить на денвере.
Супексом пробовал, пишет таймаут 600 сек.
Хотя в пхп.ини стоит таймаут 3600 сек.
Через РНРМУАДМИНа тоже таймаут - 300 сек.
Как быть?
 
Разве такое возможно?
ID'шки не будут ругаться?
Можно использовать INSERT IGNORE, но проблема таким образом решится не полностью: при совпадении автоинкрементных полей база данных не будет выдавать ошибку (вернее, не будет прерывать операцию — вместо error будет warning), но и не будет добавлять запись. Если совпадений нет, то запись добавится.
Больше ничем помочь не могу, т.к. когда я столкнулся с такой проблемой одна из баз данных была настолько мала, что не составило труда сделать все средствами PHP.
 
воспользуйтесь командной строкой
Код:
mysql -u username -p databasename < dumpfilename.sql
данные подставите свои, после ввода этой строки и нажатия энтера вас попросят ввести пароль для подключения к базе.
Дампы более 10 метров лучше заливать через командную строку, имхо.
 
  • Заблокирован
  • #6
Да, и ещё, как 650МБ дамп загрзить на денвере.
Супексом пробовал, пишет таймаут 600 сек.
Хотя в пхп.ини стоит таймаут 3600 сек.
Через РНРМУАДМИНа тоже таймаут - 300 сек.
Как быть?

если уж сипексом не удается, то только скорее всего разделить базу на 3-5 частей, вот только прийдется очень долго ждать открытия такого файла.
 
С сипексом разобрался.
Заставил его работать.

Как значения из одной БД добавить в другую бд, не заменить, а именно добавить.
Необходимо это сделать без потери информации.
 
тут вариант только один, в одной из баз поменять все id на новые, чтобы не пересекались со второй, а потом перелить. Главное - не потерять целостность таблиц, т.е. менять не только поля сами с id, но и все ссылки на них в других полях-связях.
 
согласен, заменить во 2ой базе на новые id.
Кроме max_execution_time еще надо смотреть в сторону memory limit
 
если в таблицах одинаковые записи с разными идентификаторами, то выход только один - выбираешь данные из одной таблицы ищешь их в другой базе, если нет то добавляешь
выбирать лучше всего не все сразу , а с лимитом 100-200 так памяти меньше требуется.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху