Лучший способ загрузки данных из одной базы данных в другую - PullRequest
1 голос
/ 03 октября 2011

У меня есть две базы данных Oracle. У них точно такая же структура таблицы. Есть около 15 таблиц, которые имеют различные отношения FK.

Мне нужно создать процесс, который может принимать идентификатор (PK родительской таблицы для всей базы данных) и передавать все данные в базе данных, связанные с этим ключом, во вторую базу данных.

Я думал об использовании ссылок базы данных. Однако, похоже, что эта опция не «санкционирована».

Какие еще хорошие варианты есть для этого? Я знаю, что есть инструмент импорта / экспорта для MSSql Server, но я нахожусь на Oracle. Я мог бы создать клиентское приложение, которое обрабатывало бы соединение с обеими базами данных, но для клиентского приложения это была большая работа. Я мог бы экспортировать в файлы, а затем импортировать, но опять же, это много работы.

Есть какие-нибудь идеи о том, как это сделать, или я придерживаюсь тех решений, о которых уже думал?

Я знаю, что это может быть сложный вопрос, чтобы получить действительно твердый ответ, заранее благодарю всех за помощь!

Ответы [ 2 ]

1 голос
/ 17 декабря 2013

@ kralco626 - Я знаю, что этот вопрос старый, но вы можете создать временную таблицу в исходной базе данных, которая соответствует параметрам исходной таблицы. Затем скопируйте записи, которые вы хотите переместить в новую базу данных из исходной таблицы в новую временную таблицу. Синтаксис:

CREATE TABLE source_new_table
AS (SELECT * FROM source_old_table
    WHERE old_table.column_name = criteria);

Теперь экспортируйте новую временную таблицу с помощью команды экспорта таблицы данных. синтаксис:

EXPDP source_schema_name/source_schema_password TABLES=source_new_table DIRECTORY=datapump_dir DUMPFILE=dumpfile_name.dpdmp LOGFILE=expdp_logfile_name COMPRESSION=ALL

Возьмите этот файл экспорта datapump и используйте его для выполнения команды таблицы импорта datapump в базу данных назначения. синтаксис:

IMPDP destination_schema_name/destination_schema_password TABLES=source_new_table DIRECTORY=datapump_dir DUMPFILE=dumpfile_name.dpdmp LOGFILE=impdp_logfile_name

Затем добавьте записи из этой вновь импортированной временной таблицы в исходную таблицу в целевой базе данных. синтаксис:

INSERT INTO destination_old_table
SELECT * FROM source_new_table;

Сделайте этот же шаг для каждой таблицы, из которой вам нужно получить данные в исходной базе данных. После того, как вы все сделали, вам просто нужно удалить временные таблицы из обеих баз данных. синтаксис:

DROP TABLE destination_schema_name.source_new_table;
DROP TABLE source_schema_name.source_new_table;

Это должно дать вам желаемый результат.

1 голос
/ 03 октября 2011

Существует два дополнительных инструмента командной строки, которые называются exp и imp для oracle.Вы можете найти более подробную информацию о них здесь http://www.orafaq.com/wiki/Import_Export_FAQ

Главный бит, который может вас заинтересовать, - это опция условия where

exp scott/tiger tables=emp query="where deptno=10"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...