powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Обьединение двух БД в одну
17 сообщений из 17, страница 1 из 1
Обьединение двух БД в одну
    #35654665
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте ! Как правильно обьединить 2 базы в одну ? В обоих базах есть обьекты(таблицы,процедуры и т.д.) с разными именами, но разной структуры.
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654693
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lionerЗдравствуйте ! Как правильно обьединить 2 базы в одну ? В обоих базах есть обьекты(таблицы,процедуры и т.д.) с разными именами, но разной структуры.
перелить структуру и данные, если всё разное
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654705
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выгрузил структуру второй базы в скл-файл, изменяю все DBA на FLAT, чтобы знать что все обьекты принадлежащие FLAT были во второй базе.
Вопрос: есть процедура flat.proc, в ней такой текст:
Код: plaintext
1.
2.
3.
select *
from account,doc
where account.id=doc.account
Но таблицы account и doc были в обоих базах, теперь они стали dba.account, dba.doc и flat.account, flat.doc.
Нужно ли мне менять вышепреведенный запрос в процедуре на такой:
Код: plaintext
1.
2.
3.
select *
from flat.account,flat.doc
where flat.account.id=flat.doc.account
или процедура принадлежащая FLAT поймет, что account - это flat.account, а не dba.account ?
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654711
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner пишет:

> Нужно ли мне менять вышепреведенный запрос в процедуре на такой:
>
> select *
> from flat.account,flat.doc
> where flat.account.id=flat.doc.account

Да.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654725
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000
lioner пишет:

> Нужно ли мне менять вышепреведенный запрос в процедуре на такой:
>
> select *
> from flat.account,flat.doc
> where flat.account.id=flat.doc.account

Да.


Очень жаль...( А то скл-файл со структурой второй базы получился большой - около 23 тыс строк ... И редактировать его, делая эти изменения... капец...
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654735
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner пишет:

> Очень жаль...( А то скл-файл со структурой второй базы получился большой
> - около 23 тыс строк ... И редактировать его, делая эти изменения...
> капец...

Халтуру всё равно надо исправлять.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654786
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000
lioner пишет:

> Очень жаль...( А то скл-файл со структурой второй базы получился большой
> - около 23 тыс строк ... И редактировать его, делая эти изменения...
> капец...

Халтуру всё равно надо исправлять.


Где вы увидели халтуру ?
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654840
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner пишет:

> Где вы увидели халтуру ?

Владелец таблицы должен быть указан _всегда_.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654853
lioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000
lioner пишет:

> Где вы увидели халтуру ?

Владелец таблицы должен быть указан _всегда_.


во второй базе все таблицы принадлежали DBA. Разве вы в запросах всегда пишете dba.[table] ?
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654896
Dmitry..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim2000
lioner пишет:

> Нужно ли мне менять вышепреведенный запрос в процедуре на такой:
>
> select *
> from flat.account,flat.doc
> where flat.account.id=flat.doc.account

Да.


Разве надо?
Надо попробовать.
по моему если коннектиться под flat, все обьекты по умолчанию будут браться от flat.
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35654914
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner пишет:

> Разве вы в запросах всегда пишете dba.[table] ?

Безусловно и необсуждаемо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35655159
konstantines
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lionerВыгрузил структуру второй базы в скл-файл, изменяю все DBA на FLAT, чтобы знать что все обьекты принадлежащие FLAT были во второй базе.
Вопрос: есть процедура flat.proc, в ней такой текст:
Код: plaintext
1.
2.
3.
select *
from account,doc
where account.id=doc.account
Но таблицы account и doc были в обоих базах, теперь они стали dba.account, dba.doc и flat.account, flat.doc.
Нужно ли мне менять вышепреведенный запрос в процедуре на такой:
Код: plaintext
1.
2.
3.
select *
from flat.account,flat.doc
where flat.account.id=flat.doc.account
или процедура принадлежащая FLAT поймет, что account - это flat.account, а не dba.account ?

Предположим, что речь идет об ASA :)

Поймет. Разумеется, если сама процедура принадлежит FLAT и в тексте процедуры владелец таблицы не прописан явно.
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35655239
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000
lioner пишет:

> Нужно ли мне менять вышепреведенный запрос в процедуре на такой:
>
> select *
> from flat.account,flat.doc
> where flat.account.id=flat.doc.account

Да.
Нет.
Если владелец таблицы не указан, то берется владелец процедуры.
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35655359
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lioner пишет:
> Автор: "lioner"
> Dim2000
>
> lioner пишет:
>
> > Нужно ли мне менять вышепреведенный запрос в процедуре на такой:
> >
> > select *
> > from flat.account,flat.doc
> > where flat.account.id=flat.doc.account
>
> Да.
>
>
>
> Очень жаль...( А то скл-файл со структурой второй базы получился большой
> - около 23 тыс строк ... И редактировать его, делая эти изменения...
> капец...

Можете на каждую таблицу создать в базе flat по VIEW типа

use flat
go

create view account
as
select * from myNewDB.account
go

Но я бы переделал, конечно. БД flat вам придется в таком случае держать
(возможно конечно гораздо меньших размеров).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35656972
_Kostik_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lionerОчень жаль...( А то скл-файл со структурой второй базы получился большой
- около 23 тыс строк ... И редактировать его, делая эти изменения...
капец...
Решение для ASA (для ASE не проверял):
1. Выгружаешь обе базы в файлы (для исходной базы достаточно выгрузить структуру).
2. Пишешь 20 строк парсера на Delphi.
2.1 Парсер проставляет нового владельца для таблиц, вьюшек, процедур, триггеров и сливает их имена в массив.
2.2. Парсер изменяет секцию from в процедурах и триггерах согласно массива из п. 2.1, т.к. при простом разборе велика вероятность напороться к примеру на alias.
3. Прогоняешь оба файла через парсер.
4. Загружаешь всё в единую базу.
P.S.
Скорость реализации зависит от знаний по работе со строками в Delphi. На PHP можно использовать регулярные выражения (ereg_replace). Однако это в разы быстрее замены вручную.
Внимательность написания парсера уменьшает время тестирования.
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35658042
blzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в power designer есть инструмент reverse enginiring, там можно и структуру получить и владельцев поменять и потом скрипты сгенерить.

зы. http://ithappens.ru/story/142
...
Рейтинг: 0 / 0
Обьединение двух БД в одну
    #35658388
Kru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blzzв power designer есть инструмент reverse enginiring, там можно и структуру получить и владельцев поменять и потом скрипты сгенерить.

зы. http://ithappens.ru/story/142

С PowerDesigner требуется осторожность, т.к. он в некоторых случаях некорректно код генерит.
Лучше выгрузить DML скрипты (DB Artisan например умеет) по созданию объектов в файлы и потом написать небольшой парсер на любом языке который Вам более всего знаком.

Заодно в процедуры имя владельца таблиц и вьюх добавите :-)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Обьединение двух БД в одну
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]