Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помогите перенести данные из одной базы в другую [D7]


Страницы:   1 2

uchik ©   (2006-08-07 17:18:00) 

Две базы в access и в oracle
Как посредством delphi скопировать все данные из аксессовской таблицы в таблицу оракловскую

(подключиться к обеим базам получилось через ADO, но как     (посредством каких компонент или др.)
передать данные из запроса select * from tableдля второй таблицы)


roottim   (2006-08-09 09:50:00) [1]

Как настрить гетерогенный сервис по агалогии можно тут посмотреть: http://www.sql.ru/faq/faq_topic.aspx?fid=163
Можно использовать возможность через OCI и DirectLoader.
В ODAC  и, думаю, в DOA оная возможность есть.


evvcom   (2006-08-08 17:07:00) [2]

> [22] ANB ©   (08.08.06 16:58)

Угу, и я про то же в [9]. Насчет кривости не знаю, особо не тестил, селекты делал. У нас тоже на MSSQL настроен шлюз.


ANB   (2006-08-08 16:58:00) [3]

Я видел, как в оракле настраивают ШЛЮЗ к ms sql server. Геморройно и довольно криво получается, но для перекачки данных должно хватить. Нужно узнать у админов, как настроить шлюз к аксессу или просто к ODBC.


WebErr   (2006-08-08 15:53:00) [4]


> uchik ©   (08.08.06 15:31) [19]

Очень большую базу можно перегонять частями, чтобы сэкономить время.
Настрой программу так, чтобы она "паузилась" в нужный момент, если тебе время критично. Но вообще оптимально оставить прогу работать, и идти домой... 8)


Sergey13   (2006-08-08 15:36:00) [5]

> [19] uchik ©   (08.08.06 15:31)

Чего ждать то? Вставки 3.5 лимона записей? Наверное. Можно и не дождаться. 8-)


uchik   (2006-08-08 15:31:00) [6]

ждать придется долго :( Верно?


Sergey13   (2006-08-08 15:04:00) [7]

> [17] uchik ©   (08.08.06 14:54)

1. В "базочках" нет записей.
2. Делфе вообще пофиг объем инфы (при правильном подходе, разумеется) - ограничитель тут СУБД.


uchik   (2006-08-08 14:54:00) [8]

Спасибо!!!
Для маленьктх базочек (~ на 5000 записей) способ нашелся.
Но сможет ли delphi справиться с  3 500 000 записей?
(Говорят, можно прямо в access сделать форму и т.д. но есть проблема с VisualBasic)


Val   (2006-08-08 11:29:00) [9]

>[14] Neo Trinitron ©   (08.08.06 11:11)
есть sqlloader. насчет анальности метода - не согласен, все, как и прежде, зависит от задач.


evvcom   (2006-08-08 11:14:00) [10]

> 1)По-моему все-таки быстрее получится. Все пачкой уйдет
> на сервер и будет там жеваться

Если быстрее, то не намного. Прикинь, здоровенный текст пойдет на сервер, потом его парсер начнет 3 часа жевать. По одной записи через параметры, думаю, и то быстрее выйдет, т.к. парсинг все же дорогая штука.


Neo Trinitron   (2006-08-08 11:11:00) [11]

А ещё можно все записи вытащить в файл, а потом вставить блоком (Bulk Insert). Не знаю правда есть ли такое в Oracle, в MSSql есть. Что это даст?

1. На этапе формирования файла можно выяснить есть ошибки или нет.
2. Если ошибок нет, то вставляем блок из файла. Это будет в рамках одной транзакции, что даст уверенность что данные перенесены все или ни одной. Всё же лучше копирования по одной записи.

Но этот метод "через задницу", гетерогенный запрос лучше.


Sam Stone   (2006-08-08 11:10:00) [12]


> Sergey13 ©   (08.08.06 11:01) [11]

1)По-моему все-таки быстрее получится. Все пачкой уйдет на сервер и будет там жеваться
2)порциями подавать :)


sniknik   (2006-08-08 11:04:00) [13]

> А можно и в Оракле настроить гетерогенный сервис.
а вот про него ничего не знаю... если можно (oracle позволяет) то пусть настроят... возражений нет. ;)


Sergey13   (2006-08-08 11:01:00) [14]

> [10] Sam Stone ©   (08.08.06 10:57)

1. Это те же яйца, только вид сбоку.
2. В кверик может не влезть.


Sam Stone   (2006-08-08 10:57:00) [15]


> Sergey13 ©   (08.08.06 08:51) [6]
>
> > [5] Sam Stone ©   (08.08.06 00:25)
>
> Интересно, как ты себе это представляешь? 8-)

в цикле по записям аксессовской базе лепим в датасет/кверю, приконнекченную к ораклу:
Begin
insert into table1(f1,f2,f3) values(a1,a2,a3);
....
insert into table1(f1,f2,f3) values(z1,z2,z3);
end;


evvcom   (2006-08-08 10:54:00) [16]

> [8] sniknik ©   (08.08.06 10:47)

Согласен. Надо было смайлик поставить, виноват. Потому
> Заменить можно в любом случае.

А можно и в Оракле настроить гетерогенный сервис. Так, наверное, это называется. Как, не скажу. Этим у нас админы занимаются.


sniknik   (2006-08-08 10:47:00) [17]

> но тогда и [ODBC; ...] придется опускать, наверное.
а вот тогда вся идея нафиг, если убрать исам конект к ораклу тогда jet не  сможет с ним связатся и выполнить запрос... а сам в себе, в jet или oracle, без внешнего доступа, запрос в контексте топика неинтересен...


evvcom   (2006-08-08 09:21:00) [18]

> [4] sniknik ©   (07.08.06 23:48)

dbo по умолчанию в оракле нет, это верно. Опустить можно, если таблица находится в той же схеме, что и имя юзера (или схема по умолчанию изменена принудительно на соответствующую), но тогда и [ODBC; ...] придется опускать, наверное. Заменить можно в любом случае.


Sergey13   (2006-08-08 08:51:00) [19]

> [5] Sam Stone ©   (08.08.06 00:25)

Интересно, как ты себе это представляешь? 8-)


Sam Stone   (2006-08-08 00:25:00) [20]


> Desdechado ©   (07.08.06 17:21) [2]
>
> и в цикле по одной записи
>
> PS бр-р

необязательно так жестоко ) можно пачками по N штук. Быстрее получится)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо