Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.057 c
2-1159092333
Серый
2006-09-24 14:05
2006.10.08
Операция div


6-1147715974
Keks
2006-05-15 21:59
2006.10.08
Загруженность сети


2-1158905284
londinium
2006-09-22 10:08
2006.10.08
Анализ выбранных фильтров


1-1156306386
Kos[UFO]
2006-08-23 08:13
2006.10.08
Сишные строки


11-1134493681
azsd
2005-12-13 20:08
2006.10.08
koledb with oracle - count() function





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский