Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UpGrade Базы с изменением структуры таблиц 
:(
    Опции темы
Се ля ви
Дата 27.5.2005, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: нет
Всего: 127



Дано:

Есть какая-то программа версии 1.0. Для неё есть скрипт для оракла, который создал структуру этой базы. Программа с ним сконнектилась и долго работала в боевом режиме.

Вышла новая версия программы - 2.0 . В ней структура базы немного (!!!) изменена (предположительно, поля только добавлены - типы полей не изменены и поля не удалались). Для неё так же имеется скрипт, создающий новую структуру.

Версия прошла тестовую эксплуатацию и её база какие-то данные уже содержит.

Задача: сравнить структуры базы, выявить различия, перенести данные из первой версии во вторую, дополнив те поля, которые не достают (новые поля) и скопировать данные из первой боевой базы туда, дополнив их данными из второй базы для тех полей, которые в первой - отсутствовали.

Пока всё это делаю в-ручную и есть ощущение, что займёт 2-3 дня. Есть ли какие-нибудь утилиты, которые могут мне в этом помочь?

P.S. У всех знакомых, кто занимается базами, спрашивал - никто не знает. Может, тут кто-то поможет?.. smile


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
LSD
Дата 27.5.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата
Задача: сравнить структуры базы, выявить различия, перенести данные из первой версии во вторую, дополнив те поля, которые не достают (новые поля) и скопировать данные из первой боевой базы туда, дополнив их данными из второй базы для тех полей, которые в первой - отсутствовали.

Не понял, как нужно дополнять реальные данные (те которые из первой базы)? Данными из второй тестовой?

Перенести можно например создав database link и выполнив простой insert, если же требуется некая програмная доработка данных, то можно попробовать написать PL/SQL процедуру.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Се ля ви
Дата 27.5.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: нет
Всего: 127



Цитата(LSD @ 27.5.2005, 17:46)
Не понял, как нужно дополнять реальные данные (те которые из первой базы)? Данными из второй тестовой?

Угу. Если там несколько разных значений, то устроит первое попавшееся (скажем, поле первой записи при сортировке по первичному ключу)


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
LSD
Дата 27.5.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Я так и не понял, можно ли это реализовать простым SQL запросом, можно приблизительный пример?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Се ля ви
Дата 27.5.2005, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: нет
Всего: 127



Цитата(LSD @ 27.5.2005, 18:37)
Я так и не понял, можно ли это реализовать простым SQL запросом, можно приблизительный пример?

Вообще-то это движок форума.

Старый форум уже работает пол-года и вот - вышла новая версия движка с немного изменённой БД.

Вот файл со структурой старой базы:

Это сообщение отредактировал(а) Се ля ви - 27.5.2005, 18:55

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  mvnForum_oracle9.sql


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
Се ля ви
Дата 27.5.2005, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: нет
Всего: 127



Вот файл со структурой новой базы:
Добавлено @ 18:59
В новой базе немного записей есть и думаю, что к данным от старой можно прибавить в новых полях эти и ничего страшного не будет.

Проблема - перейти на новый движок. Хотелось бы сделать это автоматически - разве нету для этого специальных средств? smile

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  mvnForum_oracle9.sql


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
LSD
Дата 28.5.2005, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Я взял для примера две таблички
Код
create table forum_old.mvnforumMessageFolder
(
   FolderName                     VARCHAR2(30)                   not null,
   MemberID                       INT                            not null,
   FolderOrder                    SMALLINT                       not null,
   FolderCreationDate             TIMESTAMP                      not null,
   FolderModifiedDate             TIMESTAMP                      not null,
   primary key (FolderName, MemberID)
);

CREATE TABLE forum_new.mvnforumMessageFolder
(
   FolderName                     VARCHAR2(30)                   not null,
   MemberID                       INT                            not null,
   FolderOrder                    SMALLINT                       not null,
   FolderStatus                   INT                            not null,
   FolderOption                   INT                            not null,
   FolderType                     INT                            not null,
   FolderCreationDate             TIMESTAMP                      not null,
   FolderModifiedDate             TIMESTAMP                      not null,
   primary key (FolderName, MemberID)
);

забил туда тестовые данные и перенес данные из схемы forum_old в forum_new
Код
SQL> select * from forum_old.mvnforummessagefolder;

FOLDERNAME MEMBERID FOLDERORDER FOLDERCREATIONDATE       FOLDERMODIFIEDDATE
---------- -------- ----------- ------------------------ ------------------------
FOLDER            1          11 11.01.01 00:00:00,000000 11.01.01 00:00:00,000000
FOLDER            2          22 12.02.02 00:00:00,000000 12.02.02 00:00:00,000000
FOLDER            3          33 13.03.03 00:00:00,000000 13.03.03 00:00:00,000000
FOLDER            4          44 14.04.04 00:00:00,000000 14.04.04 00:00:00,000000
FOLDER            5          55 15.05.05 00:00:00,000000 15.05.05 00:00:00,000000


SQL> select * from forum_new.mvnforummessagefolder;

FOLDERNAME MEMBERID FOLDERORDER FOLDERSTATUS FOLDEROPTION FOLDERTYPE FOLDERCREATIONDATE       FOLDERMODIFIEDDATE
---------- -------- ----------- ------------ ------------ ---------- ------------------------ ------------------------
FOLDER            1           1            1            1          1 01.01.20 00:00:00,000000 01.01.20 00:00:00,000000
FOLDER            2           2            2            2          2 02.02.02 00:00:00,000000 02.02.02 00:00:00,000000
FOLDER            3           3            3            3          3 03.03.03 00:00:00,000000 03.03.03 00:00:00,000000
                                                                                

SQL> update forum_new.mvnforummessagefolder n
  2    set
  3      n.folderorder        = (select folderorder        from forum_old.mvnforummessagefolder o where o.foldername = n.foldername and o.memberid = n.memberid),
  4      n.foldercreationdate = (select foldercreationdate from forum_old.mvnforummessagefolder o where o.foldername = n.foldername and o.memberid = n.memberid),
  5      n.foldermodifieddate = (select foldermodifieddate from forum_old.mvnforummessagefolder o where o.foldername = n.foldername and o.memberid = n.memberid)
  6  where
  7    n.foldername in (select foldername from forum_old.mvnforummessagefolder) and
  8    n.memberid   in (select memberid   from forum_old.mvnforummessagefolder);

3 строк обновлено.

SQL> select * from forum_new.mvnforummessagefolder;

FOLDERNAME MEMBERID FOLDERORDER FOLDERSTATUS FOLDEROPTION FOLDERTYPE FOLDERCREATIONDATE       FOLDERMODIFIEDDATE
---------- -------- ----------- ------------ ------------ ---------- ------------------------ ------------------------
FOLDER            1          11            1            1          1 11.01.01 00:00:00,000000 11.01.01 00:00:00,000000
FOLDER            2          22            2            2          2 12.02.02 00:00:00,000000 12.02.02 00:00:00,000000
FOLDER            3          33            3            3          3 13.03.03 00:00:00,000000 13.03.03 00:00:00,000000

если базы находятся в разных то надо использовать database link.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Се ля ви
Дата 31.5.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java/SOAрхитектор
****


Профиль
Группа: Модератор
Сообщений: 2016
Регистрация: 5.6.2004
Где: place without tim e and space

Репутация: нет
Всего: 127



LSD, спасибо большое!

Хотя ващет, это я стормозил - как выяснилось, там запрятанный в одной папке, поставлялся скрипт для перехода. Вобщем, задача отпала, но встать ещё где-нибудь может smile


--------------------
  )
 (
[_])
проф. блог

Кролики думали, что занимаются любовью, а на самом деле их просто разводили...
PM MAIL WWW Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.