![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Есть 2 инстанса одного и того же java-приложения и по базе для каждого соответственно.
Возникла необходимость из двух сделать одно. С приложением все понятно.
А вот с базой? Как правильно одну базу залить в другую? Чтобы не напороться на дупликейты, конфликты ID'шников и т.п.?
По хорошему нужно писать скрипт для миграции, но скиллов для этого еще мало...
Неактивен
Нужно писать скрипт для миграции.
С id можно обойтись просто - добавить ко всем id одной базы какое-нибудь большое число.
Например, миллион. И дальше тупо скопировать данные. Но только у Вас наверняка появятся
строки с одинаковыми другими значениями. Их хорошо бы вычистить.
Неактивен
А нельзя ли поподробнее насчет самого скрипта? Ни разу не писал ничего подобного и с командами SQL знаком поверхносно. Всегда хватало ГУЯ.
Неактивен
Ну, тут нужно сесть и подумать, что Вы хотите получить. Скорее всего, у Вас есть
несколько табличек, которые связаны по ID, вот некоторые ID будут дублироваться
между базами - их нужно будет ставить другие. Соответственно, во всех остальных
табличках, где эти ID используются, надо ставить новые значения.
Универсального скрипта, разумеется, нету, т.к. для этого надо знать, что же реально
хранится в таблицах.
Неактивен
Вы примерно напишите, какая алгоритмизация должна быть.
Если самостоятельно не получается - структуру базы нам сюда в виде SHOW CREATE TABLE для таблиц.
А со скриптами поможем.
Неактивен
Вот структура обеих баз:
ftp://filearea.ru/sql_nodata/
login: anonymous@filearea.ru
выложил обе т.к. они чуть-чуть отличаются
Что касается алгоритма, в итоге нужно получить единую базу на InnoDB, UTF-8. Вобщем за эталон взять базу BUILD и в нее перегнать все данные с табличек базы MEASUREMENT2
Отредактированно Fader (17.07.2008 16:47:11)
Неактивен
хм... весьма сложная задача?
Неактивен
Вы хотите, чтобы кто-то из нас написал за Вас этот сценарий. Я думаю, что просто ни у кого
нету достаточного количества свободного времени
Неактивен
Мне хотябы черновик увидеть: как это должно выглядеть. До релиза скрипт я уже сам доведу.
Неактивен
Как-то так
(подразумевается, что в b есть ссылки на элементы a)
#! /usr/bin/perl use strict; use DBI; my $src = DBI->connect (...); my $dst = DBI->connect (...); my $a = $src->selectall_arrayref ("SELECT * FROM a", { Slice => {} }); foreach my $arow (@$a) { my $b = $src->selectall_arrayref ("SELECT * FROM b WHERE aref = $arow->{id}"); $dst->do ("INSERT INTO a VALUES ($arow->{id}, ...)"); my $id = $dbh->{'mysql_insertid'}; foreach my $brow (@$b) { $dst->do ("INSERT INTO b VALUES ($id, $b->{...}, ...)"); } }
Неактивен