Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.08;
Скачать: CL | DM;

Вниз

помогите перенести данные из одной базы в другую   Найти похожие ветки 

 
uchik ©   (2006-08-07 17:18) [0]

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

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


 
Desdechado ©   (2006-08-07 17:21) [1]

если непременно через Дельфи, то для источника ADODataset, для приемника ADOCommand


 
Desdechado ©   (2006-08-07 17:21) [2]

и в цикле по одной записи

PS бр-р


 
sniknik ©   (2006-08-07 23:44) [3]

из access (jet)  в принципе можно сделать гетерогенный запрос к ораклу (isam odbc есть, это значит практически к любой базе...) но вот будет ли это работать... без проб точно не скажеш. (mssql, firebird пробовал, работает)

в обшем, пример для MSSQL, под одну запись (принцип, "инсерт фром селект" тоже можно), в подключении к access (jet. а впрочем найде другое ;о)))
INSERT INTO [ODBC;DSN=MyODBCLink;UID=sa;PWD=1234;DATABASE=TestBD;].dbo.Table1 (parent,child,name) VALUES (0, 100, "Value")
попробовать тоже для оракла...

для начала все настройки сделать в ODBC DSN тогда станут ненужными указания пароля и т.д. запись сократится до (селект) SELECT * FROM [ODBC;DSN=MyODBCLink;].dbo.Table1 (и удобнее в ODBC при настройке можно тест конекта сделать...), а потом добавить если это пройдет.


 
sniknik ©   (2006-08-07 23:48) [4]

да dbo в оракле тоже нет, т.что юзера можно опустить/заменить наверное. (конкретно, на синтаксис как ругнется то то ему и дать, что в ошибке скажет)


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


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

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


 
Sergey13 ©   (2006-08-08 08:51) [6]

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

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


 
evvcom ©   (2006-08-08 09:21) [7]

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

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


 
sniknik ©   (2006-08-08 10:47) [8]

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


 
evvcom ©   (2006-08-08 10:54) [9]

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

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

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


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


> 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;


 
Sergey13 ©   (2006-08-08 11:01) [11]

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

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


 
sniknik ©   (2006-08-08 11:04) [12]

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


 
Sam Stone ©   (2006-08-08 11:10) [13]


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

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


 
Neo Trinitron ©   (2006-08-08 11:11) [14]

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

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

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


 
evvcom ©   (2006-08-08 11:14) [15]

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

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


 
Val ©   (2006-08-08 11:29) [16]

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


 
uchik ©   (2006-08-08 14:54) [17]

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


 
Sergey13 ©   (2006-08-08 15:04) [18]

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

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


 
uchik ©   (2006-08-08 15:31) [19]

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


 
Sergey13 ©   (2006-08-08 15:36) [20]

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

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


 
WebErr ©   (2006-08-08 15:53) [21]


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

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


 
ANB ©   (2006-08-08 16:58) [22]

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


 
evvcom ©   (2006-08-08 17:07) [23]

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

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


 
roottim ©   (2006-08-09 09:50) [24]

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



Страницы: 1 вся ветка

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.046 c
1-1156346723
trackbar
2006-08-23 19:25
2006.10.08
TrackBar и рамка фокуса


15-1158611953
Евгений Р.
2006-09-19 00:39
2006.10.08
Позиционирование в RichEdit


1-1156676748
Интересующийся
2006-08-27 15:05
2006.10.08
Webbrowser


2-1158511777
POP
2006-09-17 20:49
2006.10.08
Асинхронное IO чтение/запись в порт.


2-1158328792
Pa5ha
2006-09-15 17:59
2006.10.08
StrToFloat и языковые стандарты