Как вставить данные из той же таблицы, которая находится в другом экземпляре, используя ORACLE SQL - PullRequest
0 голосов
/ 26 апреля 2018

Требуется ваше предложение по вставке данных из той же таблицы, которая в другом случае использует ORACLE SQL, но у меня другой случай, объясненный ниже.

У нас есть два экземпляра A и B, и существует таблица Test.в обоих экземплярах с одинаковой структурой, но таблица в Экземпляре A не имеет никаких данных, а в таблице в Экземпляре B есть некоторые данные.Мы хотим скопировать данные из Экземпляра B в экземпляр A , но идентификатор из экземпляр A должен быть заполнен ID A11 не с идентификатором из таблицы экземпляр B .Обратите внимание: Мы хотим обновить это время во время вставки данных в таблицу в экземпляре A , а не после этого.

**Instance A**                  **Instance B**
Table Test                   Table Test                         
ID  column1 column2       ID    column1   column2       
                          A12   500        600              
                          A12   500        600               
                          A12   700        750               
                          A12   500        600      
                          A12   500        600  

Результаты в экземпляре A после копирования данных из экземпляр B должен выглядеть следующим образом

ID   column1    column2
A11  500          600
A11  500          600
A11  700          750
A11  500          600
A11  500          600

Пожалуйста, дайте нам знать, как можно добиться этого. Ваши отзывы будут высоко оценены.

clearer table structure of the tables given above

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Что вы можете сделать, это сгенерировать несколько операторов вставки для каждой строки B, а затем вручную вызвать их в базе данных A.Что-то вроде

SELECT 'Insert into test (id, column1, column2) values (''A11'', ' || b.column1 || ', ' || b.column2 || ');'
FROM test b;

Это сгенерирует кучу операторов вставки, которые будут выглядеть как

Insert into test (id, column1, column2) values ('A11', 500, 600);

И затем вы можете вручную вызвать эти операторы вставки в вашей другой базе данных.

РЕДАКТИРОВАТЬ

Исходя из вашего комментария о том, что таблица Test имеет 100 столбцов , тогда может быть лучше использовать экспорт данных expdp и импорт данных impdp.С помощью этих утилит вы можете указать экспорт только данных вашей тестовой таблицы, а затем импортировать их в другой экземпляр.

Обязательно включите для expdp аргументы TABLES=Test CONTENT=DATA_ONLY и для impdp аргументы TABLE_EXISTS_ACTION=APPEND

0 голосов
/ 26 апреля 2018

Что вы называете "Экземпляр"?Это другой пользователь в той же базе данных?Другая база данных?Что-то еще?

Если первое, пользователь A должен предоставить INSERT пользователю B, и - при подключении как B - вы

insert into a.test (id, column1, column2)
select 'A11', column1, column2
from test;

Если позже, вы создадите базу данныхссылка от B до A и (подключен как B)

insert into test@dbl_a (id, column1, column2)
select 'A11', column1, column2
from test;

Если ничего из вышеперечисленного, ответ может зависеть от того, что такое «экземпляр».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...