Текущий архив: 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.5 MB
Время: 0.044 c