Как перенести данные из одной базы в другую
Модератор: Naeel Maqsudov
-
- Сообщения: 18
- Зарегистрирован: 11 апр 2005, 14:46
- Откуда: Драхелас
Люди добрые подскажите есть две БД в формате аксцесса структура таблиц одинаковая. Как можно перенести данные из одной БД в другую при чем нужно устанавливать фильтр по первой базе или хотя бы просто перенести данные из одной в другую.
Freeman8901, вообще-то можно использовать для этих целей MS Data Transformation Service (MS DTS). Особенно если мероприятие одноразовое. Даже если оно поторяющееся, то "трансформацию" можно сохранять для повторного использования. MS DTS идёт в _полном_ разливе офиса (как и MS SQL Sevrer Desktop Edition), так и с сервером.
Если охота экзотики, то просто делаешь кучу запросов (выборки) к одной БД и кучу запросов (вставки) к другой БД.
Если охота экзотики, то просто делаешь кучу запросов (выборки) к одной БД и кучу запросов (вставки) к другой БД.
Даже самый дурацкий замысел можно воплотить мастерски
Вообще-то, если не ошибаюсь, как-то в одной сессии можно было подцепляться сразу к двум базам, делать выбоку из обоих и вставлять с помощью insert into из одной базы в другую... Но не уверен, что в ADO+Access.
Однако, из личного опыта, быстрее всего переносить данные ручками через буфер, как бы дико это не звучало. Пошаговый insert дольше работает. Проверено многократно...
Проверялось, в основном на экспорте из екселя (ворда, блокнота) в Access
Однако, из личного опыта, быстрее всего переносить данные ручками через буфер, как бы дико это не звучало. Пошаговый insert дольше работает. Проверено многократно...
Проверялось, в основном на экспорте из екселя (ворда, блокнота) в Access
Именно так и можно. Как внешние данные подцепляешь, т.е. по ссылке получается, и копируешь из одной таблицы в другую запросами, и так все поочереди.Вообще-то, если не ошибаюсь, как-то в одной сессии можно было подцепляться сразу к двум базам, делать выбоку из обоих и вставлять с помощью insert into из одной базы в другую... Но не уверен, что в ADO+Access.
The trurh is out there...
-
- Сообщения: 18
- Зарегистрирован: 11 апр 2005, 14:46
- Откуда: Драхелас
а как можно переключаться между базами (извените за глупый вопрос раньше я писал проги на досовских языках, а щас пытаюсь на дельфях)
переключаться где? в SQL можно так
или так
анологично этому
Код: Выделить всё
insert into Base1..tablename
select * from Base2..tablename
Код: Выделить всё
use Base1
select * from tablename
use Base2
select * from tablename
Код: Выделить всё
select * from Base1..tablename
select * from Base2..tablename
The trurh is out there...
-
- Сообщения: 18
- Зарегистрирован: 11 апр 2005, 14:46
- Откуда: Драхелас
RoKon, подскажите пожалуйста где это необходимо написать в каком модуле
Вообщето мои примеры больше ориентированы на раюоту чисто в сиквел менеджере каком-нить, типа QueryAnalysera.
Пример того что было описано еще выше на Аксесе выложил http://www.rksoft.nm.ru/others/dbAccess.rar
А так конечно все зависит от того где тебе нужно это перключение. Может его и не нужно вовсе, а можно просто работать одновременно с двумя бд.
Пример того что было описано еще выше на Аксесе выложил http://www.rksoft.nm.ru/others/dbAccess.rar
А так конечно все зависит от того где тебе нужно это перключение. Может его и не нужно вовсе, а можно просто работать одновременно с двумя бд.
The trurh is out there...
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Не спорьте.
Все делов том, что тема находится не на месте.
Во-первых тема переезжает из Delphi в Access
Во-вторых исходная задача решается так
В MSJetSQL (который используется в Access) есть предложение IN которое позволяет использовать другую базу (нетекущую) для выполнения запроса
Чтобы из текуще базы экспорировать данные используется конструкция
SELECT field1[, field2[, ...]] INTO newtable [IN externaldatabase]
FROM source
или
INSERT INTO target [IN externaldatabase] [(field1[, field2[, ...]])]
SELECT [source.]field1[, field2[, ...]
FROM tableexpression
(первый вариант создает новую таблицу или пересоздает ее, а второй только добавляет данные)
А чтобы в текущую базу затащить данные можно
также сделать INSERT INTO, но уже SELECT написать так, чтобы он тянул данные извне, (т.е. поставить IN после FROM)
См. справку!!!!
C:\WINNT\Help\JETSQL35.HLP и вообще JET*.HLP
Все делов том, что тема находится не на месте.
Во-первых тема переезжает из Delphi в Access
Во-вторых исходная задача решается так
В MSJetSQL (который используется в Access) есть предложение IN которое позволяет использовать другую базу (нетекущую) для выполнения запроса
Чтобы из текуще базы экспорировать данные используется конструкция
SELECT field1[, field2[, ...]] INTO newtable [IN externaldatabase]
FROM source
или
INSERT INTO target [IN externaldatabase] [(field1[, field2[, ...]])]
SELECT [source.]field1[, field2[, ...]
FROM tableexpression
(первый вариант создает новую таблицу или пересоздает ее, а второй только добавляет данные)
А чтобы в текущую базу затащить данные можно
также сделать INSERT INTO, но уже SELECT написать так, чтобы он тянул данные извне, (т.е. поставить IN после FROM)
См. справку!!!!
C:\WINNT\Help\JETSQL35.HLP и вообще JET*.HLP
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Короче, если мы достучались до движка MSJet Engine, то мы можем работать с любой базой (включая ODBC), а точнее со всеми базами одновременно. Используйте одно подключение и таскайте данные откуда угодно и куда угодно.